My week of Scala continues at the ACCU 2011 in Oxford. I will be here, incidentally, until Saturday lunchtime. At least that is the plan.
First let me add some record of tweet to my presentation yesterday. You can also download my ACCU 2011 Introduction to Scala presentation direct from XeNoNiQUe. Otherwise play the Scribd version, at least that will work iOS devices including those tablets you all love to play with.
@ewan_milne: #accu2011 Proof that Scala is the future: RT @peter_pilgrim: Right then. My second day at #accu2012 can properly begin now.
@gmtng: just favorited your tweet: As promised My latest SlideShare upload : #ACCU2011 Introduction to Scala: An Object Functional Lang…
@AnthonySterling: RT @peter_pilgrim: @AnthonySterling Yes Slideshare conversion is broken. Download my "Intro to Scala" PDF directly http://is.gd/scalaintro
@alewark just favorited your tweet: As promised My latest SlideShare upload : #ACCU2011 Introduction to Scala: An Object Functional Lang… http://slidesha.re/hufsPG
@AnthonySterling: Aww, what a shame. It appears @peter_pilgrim’s "Introduction to #Scala" slides are borderline useless on @slideshare. http://is.gd/L77ouo
@jezhiggins just favorited your tweet: #accu2010 unfortunately slideshare messed up its view w/ the colours. Download my Intro to Scala PDF directly
@richardfearn just favorited your tweet: Audioboo: ACCU 2011 Introduction To Scala: We Past The Point of No-Return http://boo.fm/b329633 #accu2012 #scala #adoption #beyond #java
@richardfearn just favorited your tweet: #accu2010 unfortunately slideshare messed up its view w/ the colours. Download my Intro to Scala PDF directly
@pfriis just favorited your tweet: As promised My latest SlideShare upload : #ACCU2011 Introduction to Scala: An Object Functional Lang…
@patbaumgartner just favorited your tweet: As promised My latest SlideShare upload : #ACCU2011 Introduction to Scala: An Object Functional Lang…
Dear fellows know that you are knocking me out with this stream of consciousness.
Beyond The JVM Platform
I rediscovered a little gem of book by Bruce Tate, “Beyond Java: A Glimpse of the Future of Programming Languages” published September 2005 by O’Reilly. I bought a copy of this little gem, may be in 2006, it was only 180 pages long. Tate’s book pushed the benefits of Ruby the programming language, Rails the poster child of Ruby and continuation frameworks like Seaside for Smalltalk as being the future at the time. He gave a thorough assessment of Java’s history and achievements in the Internet. At around the tenth birthday of Java, I remember going to the most amazing JavaOne conference ever (2005), what a party that was. It was my second ever JavaOne conference and one where Sun Microsystems introduced the JavaCard on all of conference badges for the first time. Tate’s book in the autumn was a sobering come-down.
My overall conclusion after reading the book was that Java was going to be alright still. Although I did not understand then the functional influences from outside the platform like closures and high order methods, I took the book as a certain opinion, I never migrated to Ruby or Rails programming at all. I stayed with the Java software problem.
In 2005 the Java programming language had certain weaknesses in it, generics had just appeared there in Java SE 5 and the enhanced-for loop. All enterprises that I contracted for at the time, where stuck with J2EE 1.4 and application servers, Web Logic 7 –> 8, which had no official endorsement for Java 5. Businesses like investment banks where loath to upgrade to the next technology, because they were restrained by the commercial support and service layer agreements with the suppliers. This is still a familiar trend and circumstance in our industry.
As most of us know the path of Java programming language moved from the client-side to the server-side from 1998, when I first got involved with the Java platform, until 2005. Tate had this to say in his book:
“As the emphasis from Java shifted from client to server, enterprise integration became more important. Here, the partnership of IBM, Oracle, BEA, Borland and Sun, other paid huge dividends”
In 2011, we all know that Oracle swallowed up BEA in 2007 and then acquired Sun Microsystems in 2010. The number of enterprise players is now much smaller, and both IBM and Oracle collaborate on the OpenJDK project as well as being major Java EE suppliers. Java still has a large server-side community. It still is great solution for application server and enterprise development that is if you want to continue with the current solutions.
If you have a desire to push the platform to new limits then the programming language and the current framework may not be enough for you. If you are looking to cloud enterprise solution is going to be hard to find a standard JSR at the moment, if you are looking to go the other way in user interface, mobile or desktop solution there is a multitude of ideas, API, library and frameworks that may fulfil the requirements. The point is that many innovations now are in happening in languages other than Java or that those solutions are wrapping a domain specification language in a host language around Java APIs. (Grails and Spring Bean configurations written Groovy around the Spring Dependency Injection model. Bill Venners ScalaTest is a Scala framework and fluent testing DSL that can be launched via JUnit / TestNG or Maven or Ant or your favourite IDE)
Tate in retrospect managed to predict a few outcomes in his 2005 book. One is the demise of Sun Microsystems. He wrote long before, Jonathan Schwarz changed the NASDAQ stock sticker from SUNW to JAVA, and the chief executive’s own open blogging, that:
“Sun is not the company that it once was, placing Java’s future in doubt. I’m not saying that Java will disappear, but Sun might. It has lot of cash in the bank, but where is it going to make money? It’s being squeezed on the low-end by companies like Dell, and AMD. IBM is squeezing Sun from above. Sun’s software and services businesses have never really taken off. I think Sun is a ripe acquisition target.”
At the time, Tate was nervous about IBM acquiring the Java brand. He was correct in April 2009. IBM made an attempt to acquire the entire brand. Who knew? Luckily (or unluckily) Oracle acquired the brand. In my opinion Oracle may just have given the Java platform at least another decade of real commercial growth, may be even two. It is always an uncertain business to predict the future. However, in my opinion, which is shared by many others, the whole Java software platform should have a good steward.
In today’s ACCU 2011, there was a great session, which I attended, by Steve “The Doc” List, and he talked about roles in facilitator patterns and anti-patterns. In my view and I am sure you can agree that Oracle cannot be classed as a Benevolent Dictator, rather it is more Qualifier and Dominator. Oracle has started, for the good of the community, to acquire the roles of Articulate (The Java Spotlight podcast and Early Access for JavaFX 2.0) and Converger (IBM and Apple agree to participate on the OpenJDK project, JCP and JDK 7 and JDK 8 announcements pushed, Bruno Souza and Soujava as EC members) and Gladiator (JDK 7 and JDK 8 Java Specification Requests pushed forward, much to chagrin of Apache Software Foundation, Doug Lea, Tim Peierls).
Sun Microsystems did very belatedly attempt to return to client-side, with JavaFX Script 1.x, with the Re-Invigoration of the Desktop theme of JavaOne 2007. My incandescence is not quite red, but orange-amber as my feelings on how the emergence of JavaFX came about. I shall thus summarise: too little and too late; bigger pie than the estimate delivery; strategy and right-timing and there is still time for JavaFX 2.0 success with domain specification languages written in alternative JVM languages.
Tate also postulated the question: Why not just fix Java?
“That would easy if you could pinpoint the problems. If you thought the problems were in the language itself, you could just do some major surgery and offer a new version of Java. That’s easier said than done. Sun has been very careful to preserve backward compatibility at all costs.”
Sun was conservative in order to protect customers. I also agree that is a super strategy in comparison to the combatant approach taken by Microsoft. History has shown Microsoft will dictate over the experiences and requirements of its customers. We know best is the mantra. Microsoft wholesale deprecated SilverLight, changed Visual Basic from version 5 to 6 and then forced customer to change source code by changing the languages of C# 2.0 to 3.0 to 4.0.
There is another side to this, I think customers need to be told sometimes to upgrade or update its applications and systems. Even Microsoft itself attempted to put down Internet Explorer 6 with a massive multi-million dollar global advertising campaign a year ago, telling us to upgrade to Internet Explorer 8. The issue for Microsoft is that it has earned the mistrust of millions of users as well as thousands of companies for just getting the product wrong. Windows Vista uptake was never as good in satisfaction, because of the troubles with driver incompatibilities, poor start-up times, and user experience expectations. In comparison to the upgrade from Windows 3.1 to Windows 95, Windows Vista was a poor imitator. Albeit, Windows 7 is a much better operating system, there are still problems for businesses concerning drivers, hibernation and one sometimes still cannot deliberate and summarily kill any process on the machine. Microsoft has to it’s credit pushed the technological curve through zealotry. Sometimes you just have to do it, because the client will never upgrade and you can never get to the next level of evolution, and therefore it is time, sadly, for laggard enterprise to go take a hump. I am rather sure you can personally name a few concerns that are like that: just hanging on to the older stuff because it can and it will
Much of the knowledge we have now, was the same when Tate wrote:
“Many languages have trumped Java technically, but they still failed. Betamax, too, was technically better than VHS. The biggest factor of the equation is social. Without a credible community, there can be no success.”
The Groovy community is a great example of this social aspect and interaction. Paul King in Australia has reported that he personally has helped more businesses in get up to speed in Groovy and Grails in over 100 projects. The idea of introducing Groovy in small tasks in the beginning and letting developers do experiments in projects in areas that do not affect the critical-path of business, like administration, building a web site to back an database table, or tidying up a build operation allowed developers to gain confidence. It would be and should be the same for Scala adoption. Start small, gain trust and confidence. Keep going on.
“Unless it is a disruptive technology, it has hard to see the next major programming language coming from a commercial vendor. There is just too much fear and distrust among the major players.”
Tate is this case has been proven largely and fuzzily true. You need to learn Java the programming language if you going to program an Android mobile phone or tablet. Google never introduced a new programming language for Android. They could have or some people might have said that they should have. However they wanted knowledge transfer and easy access to the market mind share of the engineers, the 9-10 millions Java knowledgeable people on the planet: developers, designers and architects. It is a number game after all. You only need less than one percent to look at your new operating system / mobile solution probably to be affective. They rather assimilated the programming language of Java like the Borg and transcribed language’s semantics and syntax into their own Dalvik executable instructions.
Customer business can be laggard about holding on applications written in Java the programming language. These enterprises should know that some of the real innovation is attracting the best engineers to look beyond the language. There are examples of projects in Scala, JRuby, Groovy and Clojure etc that show how we can better write software of the future.
Tate had some metrics for Java’s successor, namely:
- Dynamic typing for better productivity
- Rapid feedback loop
- User interface focus to provide, rich environment for building user interfaces
- Dynamic class model, ability to discover and change the parts of a class at runtime
- True OOP provide a conceptually pure implementation object oriented programming with no primitives and a single root for all objects
- Consistent and neat – the language should code that’s clean and maintainable
- Continuations – the language should enable important higher abstractions like continuations
Scala the object-functional multi-paradigm programming language, in the year 2011, meets Tate’s requirements from 2005, except for dynamic typing and adaptable class model. Scala instead is statically typed and therefore is safe and performant as much as possible to writing an equivalent application in the Java programming language. Scala does not provide dynamic classes, it has traits (mix-ins) and composition.
Scala also has a doorway into the funky new world of functional programming. Tate had not the foresight in 2005 to see that the under-utilisation of CPU cores is now expected to cause the industry major concern in this decade. He is also could not see the wider burgeoning interest in domain specific languages and writing control abstractions for library users.
Even if Scala is not the next Java successor, there is suddenly a great interest in interoperability of languages on the Java Virtual Machine. How on earth are we going allow these languages to call each other methods or routines, or even now compile and build together? How can also ensure that these language, the dynamically typed one, are going to be performant across multiple CPU cores?
We are going to find out however, it is not a question of if and but when, because the major innovators are pushing the platform forward. Suddenly every engineer or rather elite engineer or those that consider themselves to be in the elite cliqué are wanting to be language designers. The class and the form of these language designers will tell in time, I suspect if you starting now you have an awful long way to learn to be good one. If you think are then probably I am writing to a child prodigy or somebody help me out here. Designing a language is hard enough, designing the next great successor language to Java is an even tougher task.
I trust in Professor Martin Odersky in his scalable language idea as a probable answer and other languages are welcome as well. As I said in my talk on Wednesday morning, we are going to be drinking a lot of coffee beans and the rollercoaster ride in the object / functional space is going to be rough, we need a good captain and sailors, and seat belts. No matter whatever will happen, I have two predictions for the Java eco-systems.
- The interest and adoption of alternative JVM languages will increase in pace, as long as Java the programming language is constrained backward compatibility and the innovators in the other languages keep pushing the envelope ahead of Java.
- The amount of new ground-breaking applications written from scratch purely in the Java programming language starts to decline from this year (2011) onwards. In other words if there are truly great killer applications / application frameworks written in Java from this point onwards, they will cater also for alternative JVM language too.
For now I bid you adieu.