Migration Manager for Scala is now Open Source

May 25 / 9:00am

Today, Typesafe is open sourcing the code behind Migration Manager, a binary compatibility reporting tool for Scala.

Migration Manager gives Scala project owners the ability to test their projects for binary compatibility with prior versions. Migration Manager has already been used to ensure binary compatibility for the 2.9.x series of Scala releases, and we look forward to seeing other projects in the Scala ecosystem adopt it soon.

While Migration Manager has been available for download free of charge since its inception, Typesafe has now made the source code available under the Apache License 2.0 in this GitHub repository. Please check it out and contribute!

Migration Manager provides the ability to detect binary incompatible changes between two versions of the same project. This can be done in one of three ways:

Rich User Interface

The rich user interface is the same interface that has been available for the life of the tool. You can find a more detailed getting started guide at Migration Manager - Step by Step guide.

Mima-free

Command Line

With the open-source release of the Migration Manager, a command line interface has been added. You can download the standalone jar here.

Here’s how to invoke it:

java -jar path/to/mima-reporter-assembly-0.1.3.jar \
  --prev previous.jar \ 
  --curr current.jar
Found 0 binary incompatibiities
===============================

SBT Plugin

The Migration Manager also provides an SBT plugin for usage within SBT.

To use it, add the following lines to your project/plugins.sbt file:

resolvers += Resolver.url("sbt-plugin-releases", 
  new URL(
"http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/"))(Resolver.ivyStylePatterns)

addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.3")

And then in your build.sbt, configure the migration manager so that it knows which artifact to use for testing binary compatibility:

import com.typesafe.tools.mima.plugin.MimaPlugin.{
    mimaDefaultSettings, 
    previousArtifact
  }

mimaDefaultSettings

previousArtifact := Some("organization" % "artifact" % "1.0")

In the above, the previousArtifact setting is used to resolve the previous version of your project, using the resolvers defined in your project, and compare the current class files to the previous version. To run the test, call the mima-report-binary-issues task from the SBT prompt.

Summary

We’re excited to make this open source contribution, and we look forward to collaborating with the Scala community to continue to improve Migration Manager.

For downloads and to learn more, please visit the Migration Manager page on the Typesafe web site.

Filed under  //  migration-manager   scala   typesafe  

Typesafe Stack 2.0.2

May 23 / 7:00am

We have released Typesafe Stack 2.0.2, a second update to our recently introduced Typesafe Stack 2.0.

This is a maintenance release with improvements and bug fixes, and includes Akka middleware 2.0.1, Scala 2.9.2, and Play framework 2.0.1.

Highlights of this release include:

  • Updated SBT to 0.11.3, with support for Scala 2.10 and new default repositories
  • Updated Giter8 to 0.4.5, with fixes for github authentication issues and support for SBT 0.11.3

The update release is available at the Typesafe Stack download page.

Filed under  //  akka   playframework   sbt   scala   stack   typesafe  

Typesafe Stack 2.0.1

Apr 17 / 12:00am

We have just released Typesafe Stack 2.0.1, an update to our recently introduced Typesafe Stack 2.0.

This is primarily a maintenance release with improvements and bug fixes, and includes Akka 2.0.1, Scala 2.9.2, Play framework, and an improved installer.

Here are some of the highlights:

Typesafe Stack Installer
  • Updated to Giter8 0.4.3.
  • Added Scala 2.9.2 to base package
  • Fixed windows bat files for universal install
Akka Middleware
  • Updated to Akka 2.0.1
  • Vastly improved ZeroMQ module. Much better performance. Some bugs fixed.
  • This release is binary compatible with Akka 2.0
  • Memory and performance enhancements
  • Improved Java API
  • Many more minor bug fixes and documentation enhancements
  • Full list of enhancements here
Scala
  • Updated to Scala 2.9.2
  • ScalaDoc improvements.
  • Fixed bugs in XML, CharArrayReader and InnerClasses
  • Fixed memory leaks in presentation compiler
Like usual, this update release is available at the Typesafe Stack download page. Enjoy!

 

Filed under  //  akka   playframework   scala   stack   typesafe  

Scala IDE for Eclipse 2.1 Milestone 1

Apr 13 / 11:54am

Today we released an early preview of the Scala IDE for Eclipse v2.1! While the goal of v2.0 was to provide a reliable environment for your Scala coding, with v2.1 we want to bring your Scala development experience to a whole new level.

In this milestone there are a whole lot of new features for you to try out: implicit highlight, move refactoring, a Scala debugger and semantic highlight are some of the most exciting ones. If you are like us, once you start using them you will no longer be able go back. They are simply too addictive!

Let’s have a quick round at the new available features.

Implicit Highlight

Implicits are a powerful Scala construct, but it is often hard to guess when they are applied. With implicit highlight you get immediate visual feedback in the editor and, by pressing Cmd/Ctrl+1, you can turn an implicit into an explicit call. Read more…

Mantra: de-obfuscate code!

Move Refactoring

There is a new refactoring available in your toolbox. Move refactoring will let you move a source file between packages or extract a class/object/trait definition (from a file with multiple definitions) and move it to a new location. And, of course, it will make sure to keep your imports sane. Read more…

Forget copy/paste!

Scala Debugger

You have been asking for better debugging support, we have been listening.

A few weeks ago we started to work on a full-fledged Scala Debugger and today you can have an early look at what is going to offer. As of now, you can already step through closures and have a Scala-aware display of debugging information. Read more…

Profit.

Semantic Highlight

Semantic highlight colors identifiers based on their meaning, which goes a long way into improving readability. All the contextual information about identifiers are available right at the usage site, which means you no longer need to jump to the declaration to tell what kind of Scala element you are looking at. Read more…

Embrace semantic highlight and say “au revoir” to the old habit!

A glance at the future

While we are really excited about this milestone, we are already working on the next “big things” planned for 2.1. One important addition is the creation of an API to ease the development of plugins on top of the Scala IDE. We are confident that this will incentivize developers, and hopefully we will soon have an exciting plugins’ ecosystem.

Have a look at the Roadmap and see what is planned next.

Install it now!

Follow this link and grab the update-site!

This milestone is available only with Scala 2.9 and it works with Eclipse 3.7 (Indigo). We developed and tested it using Java 6, but Java 7 can be used with some caveats.

We hope you will enjoy using it and, please, let us know what you think. This is the perfect time to help us with ideas and improvement suggestions, or just contribute them.

Thanks

We would like to take the opportunity to thank all contributors for the amazing work they have done to make this milestone possible. Special thanks go to David Bernard, Luc Bourlier, Mirco Dotta, Iulian Dragos, Jeremy Heiner, Dan Kilman, Heather Miller, Jin Mingjian, Eric Molitor, Martin Odersky, Hubert Plociniczak, Matt Russell and Mirko Stocker.

Filed under  //  eclipse   ide   scala   typesafe  

Introducing Typesafe Stack 2.0

Mar 13 / 9:02am

Today is a big day for Typesafe, as we announce the availability of Typesafe Stack 2.0, including Play 2.0 and Akka 2.0, and the availability of the Typesafe Console as part of the commercial Typesafe Subscription.

The Typesafe Stack is a comprehensive platform for building applications in Java and Scala that can scale to the largest workloads in cloud computing and virtualized datacenter environments. The Typesafe Stack includes the Scala programming language, Akka event-driven middleware, and now the Play web framework, along with a robust suite of development tools.

Since we have a lot to talk about today, we’ve broken the news up into a few different blog posts. Here, we provide the highlights with links for you to dig deeper.

We’ve also posted a new whitepaper on our web site that goes into more depth on the Typesafe Stack 2.0, and why it's relevant to today's professional software developers.

Play 2.0

We announced in November that Play framework, the highly productive web framework for Scala and Java, would become part of the Typesafe Stack. Now, just a few months later, we are happy to announce that Play 2.0 has arrived and is part of the open source Typesafe Stack 2.0 and the commercial Typesafe Subscription.

Play framework 2.0 continues the emphasis on web developer productivity that has always separated Play from the pack. Version 2.0 takes the framework to a new level, with a stable and scalable foundation based on Scala and Akka, and a reactive model based on event-driven, non-blocking IO. All with native support for both Java and Scala applications.

Learn more about Play 2.0 in our blog post: Introducing Play 2.0

Akka 2.0

Just last week we announced the open source release of Akka 2.0, the event-driven middleware framework for building high performance, reliable, and distributed applications in Java and Scala. Now, it’s available as part of the Typesafe Stack and the commercial Typesafe Subscription as well.

Akka 2.0 simplifies the creation of distributed applications that span many nodes in a cloud computing or virtualized datacenter environment, with new features including location transparency, configuration-based deployment, supervision and life-cycle monitoring, and dramatic performance and scalability improvements.

Learn more about Akka 2.0 in our blog post: Introducing Akka 2.0

Typesafe Console

Monitoring distributed event-driven systems at scale can be a challenge. That’s why we’re excited to introduce the Typesafe Console, an enterprise-grade dashboard for monitoring applications built on the Typesafe Stack. The Typesafe Console is exclusively available to Typesafe Subscription customers.

The Typesafe Console provides insight into usage trends and performance characteristics of event-driven Akka actor based systems. It enables your staff to optimize system performance and detect bottlenecks before they become a problem.

Learn more about the Typesafe Console in our blog post: Introducing Typesafe Console

Scala IDE for Eclipse 2.0

Great platforms require great developer tools.  That's why we're delighted to have recently released the Scala IDE for Eclipse 2.0, which provides advanced editing and debugging support for the development of pure Scala and mixed Scala-Java applications.

Learn more about the IDE in our blog post: Scala IDE for Eclipse 2.0

Typesafe Subscription and Services

The Typesafe Subscription provides commercial support, maintenance, and deployment tools for the open source Typesafe Stack. With this release, the Typesafe Subscription covers the Play web framework in addition to Scala and Akka, and adds the Typesafe Console for monitoring Typesafe Stack applications. Typesafe also provides training and consulting for Scala, Akka, and now the Play web framework.

Learn more about commercial services on our web site: Typesafe Products and Services

Putting It To Work

Great technology is meaningless unless it can be productively applied. That’s why we’re so excited to be working with organizations ranging from the smallest startups to the largest global financial institutions who are adopting the technology in the Typesafe Stack. A case in point is Klout, the fast growing startup that measures influence online. Felipe Oliveira, Lead Application Services Engineer at Klout, makes the case for our stack well:

We were able to scale to billions of API transactions with a very small team with the extensive use of Play and Akka. Scala has also been a powerful development platform for Klout, offering greater scalability and efficiency than our previous platform.

Learn more about how Klout is using Play framework and the Typesafe Stack in this post on the Official Klout Blog.

Download the Typesafe Stack today, and get started taking your own business to the next level. We’ll be there to support you every step of the way.

Filed under  //  akka   console   playframework   scala   stack   typesafe  

Introducing Typesafe Console

Mar 13 / 9:01am

Today we announced Typesafe Stack 2.0, including Akka 2.0 and Play 2.0. This post highlights a significant new commercial offering that complements the Typesafe Stack: the Typesafe Console.

Starting today, the Typesafe Subscription includes the Typesafe Console, an enterprise-grade dashboard for monitoring your application built on the Typesafe Stack, including Akka event-driven middleware. The Typesafe Console is exclusively available to Typesafe Subscription customers.

The Typesafe Console is a tailor-made tracing and monitoring solution for event-driven Akka actor based systems. The Typesafe Console captures the events that comprise your application’s asynchronous processing, links those events into meaningful trace flows across actors and remote nodes, and makes this information actionable to developers and operations staff through a rich web-based user interface.

The Typesafe Console provides insight into usage trends and performance characteristics of the running system. The Console enables your staff to optimize system performance and detect bottlenecks before they become a problem, but also to understand reasons for current or historical problems.

Typesafe Console monitoring has been carefully designed to be always active in high-volume production environments with a minimal impact on performance. For high transaction rate systems it provides measurement sampling to reduce the overhead and amount of data.

In addition to the web user interface, aggregated metrics and detailed trace flows are also accessible through a REST and JMX API, for easy integration with third party monitoring and operations tools. Both historical and current monitoring information is available, which makes it possible to compare across time and analyze trends. The information can be scoped: by node, groups of actors, or even drilling down to individual actors.

The Typesafe Console includes probes to collect the following information from a Typesafe Stack based system:

  • message rates and peaks
  • individual trace events linked as trace trees or spans
  • latency between predefined or user defined points
  • latency distributions
  • actor supervisor hierarchies
  • actor mailbox queue size and delays
  • actor message dispatcher status
  • status of remoting and system errors
  • metadata about the system
  • JVM and OS health

You can look at the console for a live demo application here.

Graphical Console

This is what the dashboard looks like. Key metrics visualized in nice-looking graphs, animations and numbers.

Console_first

And here’s a closer look at the system overview, which displays information about the whole system.

Console_system_overview

A node corresponds to a ActorSystem, and typically also a JVM. The circle gives a quick overview of the current health of the node, and whether any errors have occurred. Details about the errors, including the full tree of trace events are one click away.

Console_node_expanded

Actors can be grouped into logical units using tags, and statistics are aggregated for all actors associated with a given tag.

Another interesting way of grouping statistics for the actors is by their message dispatcher. Insight to the dispatcher status, such as number of active threads, is also available.

At the lowest level of detail you can see individual actors.

How to Find a Bottleneck

Let’s walk through one of many useful features of the console.

Mailbox queues are interesting to monitor in an actor system. An increasing number of messages waiting in mailboxes is an indication of a problem. If mailboxes are growing constantly it is a fatal problem (memory will be exhausted).

Directly in the system overview pane you see Max mailbox size. In this example, the value is not very high, but several messages are waiting in the queue. The Max time in mailbox also makes us curious, because a half second of waiting time is more than we would expect.

Tour_bottleneck1
We click on the Max mailbox size or Max time in mailbox value to go directly to the actor with the potential problem.

In the graphs for the mailbox we can see that we have peaks in both the size and wait time, and it looks like they correlate with the peaks in the message throughput. The good news is that the actor is capable of processing the queue before the next peak of messages. The mailbox size is not increasing continually so it’s not a big worry, but the application would not be able to handle a sustained load corresponding to the message rate of the peaks.

Tour_bottleneck2

Let’s compare with another actor. As you see the mailbox graphs for ActorA and ActorB looks very different. Note the scale of the y-axis.

Tour_bottleneck3
Technical Details

The monitoring backend is highly influenced by a paper from Google which outlines Dapper, a highly scalable tracing service for distributed systems.

In short, metadata is added to the messages as they flow through the system, both across component boundaries as well as across the network. This means that it is possible to follow message chains in the distributed system. All these trace events are captured in a very efficient way using a combination of thread local state and local buffering before they are emitted to storage and off-line analysis.

Trace data is collected in the application using an instrumented version of Akka. The trace events are written to storage and consumed by an analysis server to produce aggregated statistics. The analytics is performed close to real-time, but off-line from the application. The information is visualized in the graphical console.All information is also available through a REST API, which is useful for integration with other monitoring tools or for developing your own dashboard. Most information is also available as JMX MBeans.

Please see the REST API Description for more on the available APIs.

There are, at present, three ways of persisting the trace events:
  • Writing directly to MongoDB
  • Sending to a remote actor, which writes to MongoDB
  • Sending to a Flume agent, which transports to a Flume collector, which writes to MongoDB

A span is the path between two trace events; especially the duration between these events is interesting. One typical, built-in, span type is the time to send and process messages for actors. It’s also possible to define application specific markers for spans that start and end in any location in the message trace, i.e. it may span over several actors. Statistics will be calculated for this in the same way as the built-in span types.

More Information

The graphical console has been developed in collaboration with the web-oriented architecture experts at Zenexity and the console itself is built using the Typesafe Stack, including Play framework 2.0 and Scala. The underlying tracing and monitoring layer has been developed with ScalaAkka 2.0, and Play2 Mini.

Please see the full documentation of the Typesafe Console for more information.

We invite you to take the online demo of the Typeafe Console for a test drive.

Finally, for more information on pricing and arranging an evaluation of the Typesafe Console, as part of the Typesafe Subscription, please contact Typesafe.

While you're here, don't miss our other recent posts introducing the Typesafe Stack 2.0, Play 2.0, and Akka 2.0.

 

Filed under  //  console   stack   typesafe  

Introducing Play 2.0

Mar 13 / 9:00am

We announced in November that Play framework, the highly productive Java and Scala web application framework would become part of the Typesafe Stack. Now, just a few months later, we are happy to announce that Play 2.0 has arrived and is now available as part of the open source Typesafe Stack 2.0 and the commercial Typesafe Subscription.

Let's see some of the highlights!

Native Java and Scala Support

While the original version of the Play Framework was written primarily in Java (and provided Scala support through a plug-in), Play 2.0 embraces Scala more completely. Not only has Play’s core transitioned to Scala, but the new release also makes the Scala language a first class citizen for developing Play applications. As a result, the new version of the framework now provides two equally polished sets of APIs: one for Scala developers and one for Java developers.

Introducing-play20-01

A Controller class using Java

Introducing-play20-02
The same Controller class using Scala

Rapid Application Development

One of the features that provided the “Play feel” in the 1.x series of releases was the development console and browser-based error reporting. Play 2.0 greatly extends these capabilities by allowing developers to execute code snippets, tests, and shell scripts in the runtime application context and also by compiling and building many additional parts of a typical web application.

Console-big

Pushing Type Safety to a New Level

One benefit of using a statically-typed language for writing Play applications is that the compiler can check parts of your code for you. This is why Play 2.0 uses a Scala-based template engine as the default for Play applications - even for developers using Java as their main programming language. This doesn’t mean that you have to become a Scala expert to write templates in Play 2.0. But it’s there under the covers, working for your benefit.

Play 2.0 takes compilation and type checking even further. Routes (which define URL and action mappings), templates, and even assets are now compiled (using LESS, CoffeeScript and the Google Closure compiler), providing a unified development workflow for both client side and server side developers. The result of all of this is that more errors will be detected earlier, speeding your development process. It also makes it a lot easier to work on large projects with many developers involved.

Compilation-error-big

Example route compilation failure detection

Playing Nicely

Play 1.x implemented many of its original ideas (like providing properties for Java classes and hot class reloading) through techniques that required a relatively Play-specific runtime environment. Play 2.0, on the other hand, takes a more standardized approach to runtime deployment. This was made possible partly by writing the core framework in Scala and also by building on top of SBT, the popular build tool for Scala.

Play 2.0 delivers the same simple “play new, run, start” experience as the 1.x series, while standing on a more extensible foundation. Play 2.0 comes with a preconfigured build script that will work unmodified for most, but if you need to change the way your application is built and deployed, you have the ability to customize and adapt it as needed. As a result, you’ll find it even more straightforward to deploy Play 2.0 applications in a wider variety of scenarios.

Play-releases
Pick and Choose

Because web application design has evolved a lot in the last few years, Play 2.0 features a modular architecture that helps to avoid making hard assumptions about your technology stack. You do not want to use a database? You can disable the DBPlugin. Want to use your own templating engine? Just plug it in. Do not need a full featured web framework with all the bells and whistles? Use Play as a library. How much of the architecture you want to use in your application is entirely up to you.

Screen_shot_2012-02-20_at_12
Disabling plugins in conf/application.conf
 
Scales Up, Down, and Out with Akka
 
Play is based on a lightweight, stateless, web-friendly architecture that features predictable and minimal resource consumption (in terms of CPU, memory, threads) for highly-scalable applications. This is partly thanks to Akka 2.0, the event-driven middleware at the heart of Play 2.0. Developers also have direct access to the many additional features Akka provides, to build highly distributed systems that can scale to meet any level of demand.
Introducing-play20-03
In this example you can see how Calculator actor's result can be mapped to a Play result in a non-blocking fashion

Introducing-play20-04

In this example you can see how ChatRoomActor is sending messages in chunks to the client using Comet

Advanced IO and Stream Handling
 
One of the recent trends in web app development is the emphasis on push-based and non-blocking technologies. Play 2.0 uses an Iteratee IO implementation to provide out-of-the-box support for many advanced push-based/streaming technologies, from WebSockets and Comet to file streaming.

Introducing-play20-05

A scala controller that uses the built-in WebSockets support

Ready, Steady, Play!

Play 2.0 is the result of an invigorating collaboration between Typesafe (led by Peter Hausel), Play project founder Guillaume Bort, the Play community, and Zenexity, the web oriented architecture consultancy where Play was born. It’s been fun and exciting to work alongside such a talented group of software practitioners.

We’re excited to have Play seamlessly integrated into the Typesafe Stack, together with Scala, Akka, and the commercial support, maintenance, and deployment tools (like the new Typesafe Console) that make up the Typesafe Subscription. Typesafe also offers training courses and consulting for the new 2.0 release to get your team up to speed on Play framework quickly.

We believe Play 2.0 represents a watershed moment for the Java and Scala communities, delivering a breakthrough end-to-end web development experience that brings with it new levels of scalability and developer productivity. 

To get you started with Play 2.0, we’ve bundled several sample applications with the new release. So go Play, and decide for yourself. And have fun!

While you're here, don't miss our other recent posts introducing the Typesafe Stack 2.0, Akka 2.0, and the Typesafe Console.
Filed under  //  akka   playframework   scala   stack   typesafe  

Introducing Akka 2.0

Mar 6 / 1:19am

by Jonas Bonér

Today we’re thrilled to announce the general availability of the Akka 2.0 open source project, which is at the heart of the Typesafe Stack 2.0.

Akka is a modern event-driven middleware framework, for building high performance and reliable distributed applications in Java and Scala. Akka decouples business logic from low-level mechanisms such as threads and locks. Your Scala or Java program logic lives in lightweight actor objects which send and receive messages. With Akka, you can easily configure how actors are created, destroyed, scheduled, and restarted upon failure.

What does it mean to you? By building with Akka, you gain the ability to reliably scale your application to efficiently run on modern multicore hardware, and to span multiple nodes in a datacenter or cloud service provider, without constantly needing to reinvent the wheel.

Akka 2.0 represents a major update to the Akka 1.x series of releases. The stats are impressive: 700 tickets closed and 1,020 files changed with 98,683 insertion and 57,415 deletions, and over 300 pages of reference documentation. While many of the key concepts in 2.0 will be familiar to Akka 1.x developers, there there are quite a few changes under the hood. So we’ve provided a migration kit to ease the transition (more on this below).

We’ve already highlighted some of the new notable features when we announced the Akka 2.0 pre-release milestones. In this post, we’ll give a broader overview of what’s in the Akka 2.0 final release.

APIs for both Scala and Java

We at Typesafe of course love Scala, but being able to effectively use our frameworks from Java (or in fact from any other JVM language) is critical for us. That’s why with Akka 2.0, we continue to provide two, equally polished sets of APIs: one for Scala and one for Java developers. That means you can have access to all the functionality in Akka without writing a single line of Scala code.

Actor Systems

One of the new building blocks of akka applications is the Actor System. You can think of actor systems as standalone containers that allow users to manage the behavior, structure, life-cycle, configuration, logging of certain actors separately from each other. Actor systems make it easier to structure and manage your application.

Supervision and Death Watch

Two key aspects that can be configured in actor systems are actor supervision and monitoring (the chillingly-named Death Watch).

Supervision describes a dependency relationship between actors, where the supervisor delegates tasks to subordinates while managing their failures. Monitoring, on the other hand, is used to tie one actor to another so that it may react to the other actor’s termination, in contrast to supervision which reacts to failure.

While supervision was available in a limited form in earlier versions of Akka, in 2.0 we have introduced:

  • automatically enforced parental supervision, which means that actors can only be created by other actors—where the top-level actor is provided by the library—and each created actor is supervised by its parent. This restriction makes the formation of actor supervision hierarchies explicit and encourages sound design decisions.
  • a new DSL for managing failure, which makes it simple to define what happens when something goes wrong

Failure-dsl

You can configure all sorts of aspects of a failure now.

Paths and Addresses

But how can you distinguish between the various actors managed by a supervisor? That's where actor paths and addresses come in. Since actors are created in a strictly hierarchical fashion, there must exist a unique sequence of actor names that help the supervisor to identify actors. One way to envision the aforementioned unique sequence is to think about a file system. Indeed, that was the reason why Akka adopted the name “path” to refer to it. You can also query for, retrieve and send messages to an ActorSelection consisting of a group of actors.

Actorsystem

Location Transparency

With every actor identified by a URI—with remote protocol, host, port and path—it becomes very easy to refer to actors across node boundaries, essentially removing the formal distinction between local and remote actors. The implementation of actor supervision has been simplified so that it works the same whether parent and child are on the same or different nodes. And since this distributed approach lends itself so well to scaling out, we made it even easier by allowing the deployment of actors to be specified purely by configuration, instead of through APIs as was the case in Akka 1.x. This means you can adjust the topology of your application at deployment time, without modifying the source code itself.

Akka-deploy
Configuring two nodes for actor with path /serviceA/aggregation, routed round robin with 10 instances.

Event Bus

With Akka 2.0, we’ve also made it easier to send messages to groups of actors. The new Event Bus feature brings a set of composable traits which should help you to build event driven, publish/subscribe style systems much more easily than before.

Improvements to Akka Futures

This leads us to the changes around akka.dispatch.Future. With Akka 2.0, Futures are decoupled from their ExecutionContext, Timeout management and Actor.ask functionality. This is great news since these changes not only make akka.dispatch.Future more adherent to the the Single Responsibility Principle, but also allow much more flexibility when it comes to designing non-blocking concurrent computations with actors and futures.  It’s also worth mentioning that Akka 2.0 is using the upcoming Scala 2.10 standard library Future implementation, which is a joint effort between the EPFL Scala team and the Akka team. Look out for scala.concurrent.future!

Much Improved Performance and Scalability

Akka 2.0 now uses a new Fork/Join executor (developed by Doug Lea) to improve message passing throughput and scalability. Our benchmarks show that on multi-core machines the improvements can be as high as 10X compared to java.util.concurrent.ThreadPoolExecutor.

Migration Kit

Finally, the new version of Akka comes with a migration kit that should make it easier for 1.x users to migrate in small, incremental steps (you can learn about this feature here).

Of course these are just the highlights; there are many other changes and improvements, like the redesigned Routers and Dispatchers, for example. We hope this short introduction got you excited enough about Akka 2.0 to dig in and discover the rest!

You can find out more about Akka 2.0 by browsing the extensive and newly expanded documentation on the Akka project site. The open source release is available for download at the freshly redesigned Akka project site.

Of course, Akka 2.0 will also plays a central role in the commercially supported Typesafe Stack 2.0.

Happy hAkking!

While you're here, don't miss our other recent posts introducing the Typesafe Stack 2.0, Play 2.0, and the Typesafe Console.

Filed under  //  akka   bonér   stack   typesafe  

Spring Integration Scala DSL Announced

Mar 5 / 7:56am

Today SpringSource announced the first milestone release of the Spring Integration Scala DSL.

Quoting the SpringSource announcement:

"The Spring Integration Scala DSL is a Domain Specific Language written in Scala with the goals of:

  • providing a strongly-typed alternative to XML configuration for Spring Integration
  • raising awareness about Spring Integration in Scala community
  • providing first class integration with various Scala frameworks and products such as Akka
  • providing seamless integration with Java where Scala developers can still leverage their existing Java investments"

The SpringSource blog post includes examples of the DSL and screencast demonstrations, as well as links to the project's GitHub web site, a comprehensive Introduction, a guide to Getting Started, a DSL Reference and more. 

Chris Mayer at jaxenter.com also covered the announcement in an article posted today, noting the release as another step in Scala's "ascent into the world of comprehensive enteprise support".

We're excited to see this project release as another way to accelerate adoption of Scala, Akka, and the Typesafe Stack among the Spring developer community.  Thanks to Oleg Zhurakousky and the team at VMware SpringSource behind this project.

Filed under  //  akka   scala   spring   springsource  

Jfokus 2012 Recap

Feb 17 / 6:57am

by Jonas Bonér

I'm just back from an exciting few days with the Typesafe team at Jfokus 2012. Jfokus is a conference that rapidly is becoming one of the best developer conferences in Europe. This year was no exception: high energy, great speakers and well produced. 

Typesafe had a booth where the Akka Team together with Peter Hilton from the Play framework community project were hanging around answering questions about Scala, Akka and Play. The two big announcements were that we released Akka 2.0-RC1 and Play 2.0-RC1 on the first conference day. This was great fun and created some buzz around the conference floor.

Scala, Akka and Play were well represented in the conference agenda.

The first day of pre-conference university track workshops started with Peter Lundberg from Valtech delivering a fully booked hands-on half-day workshop on Getting started with Play! framework for web development in Java and Scala.

The actual conference opened with a keynote by Juergen Hoeller from SpringSource on Enterprise Java in 2012 an Beyond in which Juergen talked about Akka and stated Scala as the “next-generation language on the JVM”. That was directly followed by a great talk on Play 2.0 by Peter Hilton, speaking in front of a packed room of developers.

Play-jfokus

Matt Raible did a nice writeup of the talk on his blog.

Day two started with Matt himself doing a replay of his highly appreciated Devoxx 2011 talk on HTML 5 with Play Scala, Coffeescript and Jade. Once again he did a great performance and got rave reviews. Read more about the talk on Matt’s blog. The Play talk was directly followed by Akka’s Tech Lead Viktor Klang of Typesafe presenting Up and Out: Scaling Sofware with Actors in front of a fully packed room of enthusiastic developers.

Akka-jfokus

His talk was very well received. One interesting thing to note was that when Viktor asked the audience how many had heard about Akka, almost everyone in the room raised their arms, and when he asked how many had used Scala, almost half of the audience did.

At the same time, in another room, Heroku’s James Ward did a talk on how to using Git to deploy Play applications to the Cloud using Heroku. James Ward’s talk was followed by James Strachan from FuseSource who presented his Scalate - Scala Templating Engine project.

By the end of the second day Typesafe’s Heiko Seeberger did a very well received, bold, almost exclusively live-coding session on how to get started with Scala titled Scala in Action, followed by a short “lightning” session by Thomas Alexandre from DevCode on the productivity boost Scala can give you titled One-liners are Your Friend: Increasing Productivity with Scala.

In total 8 conference talks on Scala, Play and Akka. Great fun.

The conference ended with myself and Peter Hilton doing a live stage interview for Oracle’s JavaSpotlight podcast, discussing the integration work between Play and Akka that the teams have done to allow Play to be fully asynchronous and non-blocking and giving Akka users a slick thin HTTP DSL module through the Play-Mini module, and much more. The result of this collaboration will be released in the next few weeks.

In short, Jfokus 2012 included lots of fun and energy for Typesafe and the Scala, Akka and Play communities. Don’t miss next year’s Jfokus conference, or for that sake the upcoming Scala Days conference in London.

Filed under  //  akka   bonér   jfokus   playframework   scala   typesafe