• Jump to Left Menu
  • Jump to Right Menu
  • Jump to Main Content
  • Jump to Footer
  • Accessibility Page
IT-Director.com Logo

 

Main navigation - go to a section of this website:

  • ARCHIVE
  • PAPERS
  • EVENTS
  • NEWSWIRE
  • BLOGS

  

Register For Membership | Member Login

 
 
DOMAINS
  • Business Issues
  • Channels
  • Enterprise
  • Services
  • SME
  • Technology
FEATURED EVENTS
  • Telecoms Tech World
    4th June - 5th June
    London, United Kingdom
  • CIMdata PLM Certificate Program
    10th June - 14th June
    Oslo, Norway
POPULAR PAPERS
  • FM, IT and Data Centres by Quocirca
  • The next frontier for managed print services by Quocirca
  • Beyond Big Data - The New Information Economy by Quocirca
USEFUL LINKS
  • Last 7 Days
  • Archives
  • Top Articles
SHARE THIS PAGE
  • Delicious Icon Delicious
  • Digg Icon Digg
  • reddit Icon reddit
  • Facebook Icon Facebook
  • StumbleUpon Icon StumbleUpon
CONTENT FEED

Sitewide
RSS Feed:

RSS Icon

What is RSS?

RANDOM QUOTE
Say Again? - "Television has raised writing to a new low." - Samuel Goldwyn

PAGE TOOLS
RECENT POSTS
  • Continuous deployment at BCS CMSG 2013
  • The Intel Software Conference 2013 in Chantilly
  • Intel's HTML app development environment
  • New platform for the Internet of Things
  • BCS CMSG Conference 2013
  • More than a DevOps story
ADVERTISEMENT
BLOG ARCHIVE
  • May, 2013
  • April, 2013
  • March, 2013
  • February, 2013
  • January, 2013
  • December, 2012
  • November, 2012
  • October, 2012
  • September, 2012
  • August, 2012
  • July, 2012
  • June, 2012
Blogs > The Norfolk Punt

Scala, the next Java?

David Norfolk By: David Norfolk, Practice Leader - Development, Bloor Research
Published: 30th March 2012
Copyright Bloor Research © 2012
Logo for Bloor Research
Tweet

Software development is increasing in complexity, and not just because the business being automated is getting more complicated. A significant, additional issue is that we are seeing the end of the Von Neumann model, which basically resulted in a mindset around serial processing, single streaming through a single processor. I'm not sure that this is an intrinsic feature of the Von Neumann model itself (although the somewhat related Von Neumann bottleneck, between memory and CPU, is), but it tends to make people think of things happening one-thing-at-a-time as you step through a program.

With modern multicore chips, however, processing should be in parallel, on many processors - cores - inside the processor chip, with many things happening at the same time. Then, with cloud computing, we are are starting to build business systems out of loosely-coupled distributed services, some (possibly all) of which we don't own and have little control over - and these may be hard to force to run serially. Basically, we need to build systems in a service-based environment where several things can happen at the same time; the real world has been like this for ever; mainframes were working like this 40 years ago but it's a rather new concept in the PC world.

There are various ways to make things look like they are exploiting parallel processing in the small scale in modern environments but these don't scale well. You may have four cores in your PC and you may break up your program into modules that can potentially run on all 4 cores but you usually find that, most of the time, 3 of them are idle, waiting for some critical operation to finish on the 4th - and, since the power in your new PC comes from additional cores rather than faster cores, you may find that buying a more powerful PC doesn't speed things up.

What we really need are different approaches specifically expecting modern computing architectures, not serial approaches bent to fit it. One example of such an approach is Pervasive Datarush which exploits something called dataflow programming for processing large amounts of data in a highly parallel way. Another approach uses something called functional programming.

However, even if programming models such as those behind conventional enterprise development environments like Java (and even Ruby), and their frameworks, aren't coping well with the new environments at large scale, being practical, you will want to protect your investments in Java programmers and training if at all possible; and, ideally, run your parallel-aware code in a standard Java Virtual Machine (JVM).

So, Datarush, for example, is invoked from Java and the main subject of this piece, Scala is a purpose-designed language that extends Java to deal with these new environments using a hybrid functional programming approach (and it has even been noticed by business-oriented magazines like Forbes).

Scala is sometimes thought of as just a new language, but it's more than that. It was designed by Martin Odersky and his book, Programming in Scala, is here. Martin wrote Oracle's Java compiler, and Scala has a strong and Java-aware development team behind it. However, it is really a "software stack", all the parts of which, at several levels, aim at simplifying the development of systems that operate with high concurrency (that is, with processes running in parallel), at scale. It uses concepts from functional-programming languages like LISP and Erlang that make it easy to avoid the deadlock and race-condition issues associated with "shared state" (which appear as program bugs when processes running at the same time on different processors interfere with each other).

The rest of the Scala stack includes Akka middleware, which is an event-driven framework for large-scale distributed cloud applications; Play, which is a web framework with a Railsdeveloper experience for the JVM but which scales better than Rails, using the Akka framework's functionality. Scala provides all this in an Eclipse developer's environment and provides a "simple build tool" for linking modules into applications.

Scala compiles into Java bytecode for a conventional JVM, so it fits well into a conventional enterprise Java-based environment, but it exploits the Java platform even better than Java does: it's more productive (often only half of the source code or better) whilst still retaining Java's current performance. Akka and Play have both Java and Scala APIs, so you can write in Java instead of Scala if you want to, which makes it easy to adopt and protects an investment in Java libraries, tools, and programming skills (although it does mean that you'll probably need to actively persuade programmers to adopt the new approaches).

Scala and Akka are being developed by Typesafeand were first released together in May 2011; in 2012, they're available together with Play and the management console (and Typesafe is working on a new framework for database connectivity, which should be available later in 2012). You can find the Scala stack here; it's developed with a "commercial open-source model" (of the sort used by Apache, RedHat and JBoss) and the Scala community is here. A paid subscription, which adds support, maintenance and the management tools and console needed for enterprise use, is available.

Scala is being used today by several well-known applications with extreme scalability issues, such as Twitter (it found that Ruby didn't really scale far enough); and LinkedIn (using it to cope with with 400 million plus transactions a day). There are other large commercial applications and Scala is becoming accepted as a powerful and innovative development environment that extends Java with functional-programming concepts. Perhaps Microsoft's F# functional programming language for .NET is a competitor - but most enterprises already develop core business applications (as opposed to, perhaps, user desktop interfaces) in Java.

Reader Comments

We have not received any comments against this entry. Why not be the first?

We automatically stop accepting comments 180 days after a post is published. If you would like to know more about this subject, please contact us and we'll try to help.

  • Contact
  • | Site Map
  • | Terms of Use
  • | Privacy Policy
  • | Cookie Policy

Published by: IT Analysis Communications Ltd.
T: +44 (0)190 888 0760 | F: +44 (0)190 888 0761