Blog

December 20, 2011

Scala IDE for Eclipse 2.0

December 20, 2011

Today marks the release of Scala IDE for Eclipse 2.0, which makes it easy to develop Scala and mixed Scala/Java projects in the familiar Eclipse Integrated Development Environment.

After 9 months of intensive work by open source community contributors, users, and the IDE project team at Typesafe, we are proud to release this new version with improved reliability, performance, and responsiveness. New features include error reports as you type, a project builder with dependency tracking, definition hyperlinking, inferred type hovers, code completion, better integration with Java build tools, and more.

A lot of effort has gone into this version of the IDE and we would like to recognize the people who have contributed so much time and energy to the success of the project.

A bit of history

The Scala IDE project began a few of years back, when Miles Sabin layed down the foundations of the open source project and an enthusiastic community formed around the effort to create a free, open-source, Eclipse-based IDE for Scala. In late 2010 the Typesafe team decided to support the open source project, and in September Eugene Vigdorchik became the first full-time engineer to work on the project. At the same time, Typesafe founder and Scala creator Martin Odersky led a reimplementation of the Scala presentation compiler, the engine behind the IDE semantic actions.

Version 2.0

For version 2.0 we had some tough decisions to take, and development started with a very limited number of features, aiming for a very reliable core. Naturally, this raised the need for early and frequent feedback from our users: on March 28 we had the first beta of the upcoming 2.0 release. This was followed by a stream of betas (12 in total), packing around 300 closed tickets over the next months. As Eugene moved on to other projects, two other Typesafe engineers joined the IDE team: Iulian Dragos and Mirco Dotta, followed by Luc Bourlier in September. Together with the great community (Mirko Stocker and Matt Russell just to name a few), the IDE took great strides to reach its first production-ready release.

Diversity

As things moved forward and the 2.0 branch became the main version in use, it became clear that we needed to have more than one IDE version: 2.0 remained the rock-solid branch, where only bug-fixing happens, while 2.1 is the place where new features, such as semantic highlighting or implicit highlighting are developed.

Besides the two IDE versions, we support three versions of the Scala compiler: 2.8.x, 2.9.x and 2.10 (Scala trunk), with nightly builds for all of them, so you can choose what suits you the best: the latest IDE developments on a stable Scala compiler, the stable IDE on the bleeding edge Scala compiler, or even the latest and greatest of both -- like the core Scala team, who uses the Eclipse IDE for their daily scalac development! The choice is yours.

Community

While the IDE always had a vibrant community around it, contributing to the project itself was sometimes challenging for newcomers. On October 4 we moved the project to Github, leading to a much simpler process for contributors. In just a few weeks we had 17 forks, some of which are extremely interesting developments in their own right (for example, check out ScalaGWT, which brings Scala to the GWT framework).

Web site

Today we also release a redesign of the Scala IDE web site, along with reworked documentation, including screencasts. Thanks Heather for the awesome work. We believe that the new site is not only pretty, but makes it much easier to find documentation, both for users and contributors (and everyone is a potential contributor). The web site is backed by Git too, so you can contribute by using the awesome Pull Request button!

A look at the future

Even though it's been a long ride, today's release is not the end of the road, but rather a beginning. We can now look at adding new features on a solid base, and great things will come, such as improved compilation speed, find references, and a Scala debugger. Suggest your favorite feature, and help us build the next great IDE.

After the 2.0.0 release we will continue to support the 2.0 branch with maintenance releases including important bug fixes. However, the focus will shift to the 2.1 development stream, and concentrate on the upcoming features. Also, 2.0.0 will be the last version to support the 2.8 compiler. This decision was not taken lightly, but the effort to support 2.8 is substantial and detracts from our ability to innovate on newer releases. We believe that 2.0.0 is a solid release that can help people who cannot upgrade to 2.9.x in the immediate future.

Features

Scala IDE version 2 improves developer productivity through a large number of features. Below we highlight the main ones, but don't forget to check out the full list on the web site, and watch the screencast to see them in action.

Report errors as you type - The IDE saves you time by type-checking your program as you type, and notifying you of errors before you build. This greatly reduces the number of times you need to build your project during development.

Project builder with dependency tracking - The IDE saves you time even when you *do* have to build your project: by using sbt's engine for tracking dependencies between source files (and even between dependent projects), the IDE builds only the necessary sources. This is often many fewer than all the source files in your project.

Definition Hyperlinking - Ctrl-click on an identifier to navigate to its definition. This allows you to concentrate on your program, since you don't need to remember in what source file a certain definition lies. Try it out by surfing through the Scala collection library!

Content assist - Hit Ctrl-space to see a list of all members you could invoke at a certain point in your program. Even members added through *implicit* conversions are available. Moreover, you can find any class on your classpath, even if it hasn't been imported in your file yet (and the completion engine takes care of adding the import).

Inferred type hovers - Hover with the mouse over an identifier to see its type. This comes in handy when the compiler infers a different type than what you expect.

And there is more! Check out the full list of features, and download Scala IDE 2.0 today at www.scala-ide.org.

From the blog

At Typesafe, we have already partnered with quite a few consulting firms to provide professional services to companies looking to Go Reactive. In doing so, we ask each of our partner candidates to put together a Typesafe Activator template that showcases their skills, capabilities and quality of work. However, that doesn't give us much visibility into the specific strengths each firm brings to the table. To help provide that visibility, we recently created a capabilities model for partners that reflects the many different aspects of our technologies...

Typesafe Deputy CTO Viktor Klang goes into the world of microservices to see how these architectures emerge from the constraints of reality. Viktor reviews the problems imposed by reality, and shows how they can not only be solved, but how the constraints free us from misconceptions that are otherwise very easy to acquire. We also explore how distributed systems are at the heart of microservices-based architectures and how communication shapes the structure, behavior and development of the software...