Emerging programming languages: Who's using them and why?
Last week, Ann Arbor was abuzz with celebrity sightings and fake snow movie sets connected with the filming of “Five Year Engagement.”
But at the same time, a group of “software celebrities” were in town conducting training on Scala, an emerging programming language for the Java Virtual Machine.
Bill Venners, co-author of the leading book “Programming in Scala” and Dick Wall, co-host of the Java Posse, provide comprehensive Scala training, and we were thrilled to host them in Ann Arbor.
Most of their public training has been in the San Francisco Bay Area, but they had heard some interest from people on the East Coast, so they were receptive to my request about doing training in our town. About 60 percent of the attendees were from out of town, mostly from Chicago, New York and Washington, D.C.
The remaining attendees were from Ann Arbor and the Metro Detroit area. It’s great to see that Ann Arbor is centrally located enough to be able to attract an East Coast audience for training.
The attendees left the class understanding the fundamentals of the Scala language, from how to integrate with existing Java libraries and applications, to how to develop in a greenfield environment.
Consistent with some of the techniques described in the Java Posse Roundup session on increasing the adoption of Scala, the course also introduced opportunities for improvements for companies still using Java, including an improved testing environment. Attendees left well-trained, and the businesses that sent them are poised to take advantage of this new language.
The questions that I hear most often from business leaders are: Why would a company transition from Java to Scala? And is the language ready for enterprise use? And while this article focuses on the specific question of moving from Java to Scala, these questions are relevant in any technology shift that your company may be considering.
Why transition?
When companies have an investment in a language, migrating to a new language often seems alarming, and concerns are often raised about how the migration might impact productivity and working code.
A focus on writing less code while depending on the compiler to do more of the work for you has been consistent since the beginning of the software industry. Scala and Java interoperate, so you can continue to use your existing Java code with new Scala code. This makes a Scala transition a win for everyone.
Switching to any new technology can be a scary proposition for business owners, so it’s important to understand if the transition will ultimately help your team work less and accomplish more.
Is the language ready for enterprise use?
To answer this question, it’s significant to look at what companies are using it. Scala has become the darling of Internet companies such as Twitter, FourSquare and LinkedIn. It’s also in use at established companies such as Siemens, Xerox, Sony and The Guardian (UK).
By focusing on the domain problem and minimizing the boilerplate code, all of these companies are finding success with Scala. LinkedIn reports that the concurrency aspects are key, while Twitter identifies the expressiveness of the code. Foursquare uses a popular Scala web framework. The Guardian initially wrote only their tests in Scala, but realized the benefit in their delivered code as well and migrated that.
In fact, the Guardian has recently reported on InfoQ that they have found “A good Java developer can learn to write Java-style code in Scala in a day, ... and very soon they're more productive than they were in Java.”
Scientists are also finding favor with Scala, enjoying the simple concurrency model and, in the latest version, support for parallel collections.
Looking to established businesses as models of change is valuable to business owners for a range of reasons. These existing businesses can help you understand how the new technology might be deployed within your enterprise as well as shed light on best practices.
Software developers aren’t typically very good at making a case for switching to a new programming language. They will focus too much on what the new language can do. They don’t connect those new features to business value.
By moving from Java to Scala, you can write more expressive code with less effort, take advantage of constructs that allow you to parallelize your code more easily, and still take advantage of your previous investment.
New technology is often more than “cool.” It’s good business.
Dianne Marsh is co-founder of SRT Solutions, an Ann Arbor custom software development firm that specializes in using newer technologies to build effective software.
Comments
Edwin Gustafson
Thu, Jun 2, 2011 : 8:05 p.m.
Independent of its business value, Scala is an awesome roundup of ideas that will permeate the field in the years ahead.
SonnyDog09
Thu, Jun 2, 2011 : 11:29 a.m.
This is an interesting article. Compare and contrast this with the typical articles about "an accident on m14. no details." or "the nws says that it might rain." This was far more interesting than those articles. It is also nice to see that a2 is at the forefront of something that may be useful.
Adam Jaskiewicz
Thu, Jun 2, 2011 : 11 a.m.
I don't know that I see a reason to "transition". They interoperate; in fact, Scala runs on the JVM, just like Java. Just like other programming languages, there are situations in which it's appropriate to use one, and other situations in which it is appropriate to use something else. Use what works for your project, whether that's Java, Scala, C, Erlang, or C#. Don't be afraid to mix languages.
Adam Jaskiewicz
Fri, Jun 3, 2011 : 11:26 a.m.
Well of course you don't want to just mix languages for the sake of mixing them. There needs to be a technical decision behind it, and while I can see it making sense to have two, maybe three languages in one project, when you start getting into four, five, or more languages you probably need to go back to the drawing board. A decent developer who has had exposure to a similar language should be able to be productive quickly, especially if existing code is well-written, and he's paired with another developer. You want to hire the people who can pick up new skills quickly and be productive with them, which means you want to be looking for skills that cross boundaries between language paradigms. If you're looking for a Java and Scala developer, a C# developer who has also extensively used Python and Erlang and has some exposure to Scheme is likely going to have less trouble adjusting than someone who only knows Java.
smokeblwr
Thu, Jun 2, 2011 : 12:26 p.m.
Be careful when mixing languages though or you'll end up with an alphabet soup of technologies, and in some cases it can be hard to find employees with skill sets to support all of them.
yohan
Thu, Jun 2, 2011 : 10:52 a.m.
Shouldn't this page have the word "ADVERTISEMENT" somewhere near the title?