Those are some of the words I remember from the keynote given by Mark Reinhold and Brian Goetz, and titled “Java 8 and Beyond” at Devoxx 2013 conference. And I think this fact shows the real and biggest difference between designing a programming language and marketing one.

Let me explain: Devoxx, which does not need much introduction, is the biggest Java conference in Europe, including anything related to Java, JVM, Android, languages running on JVM (and even Microsoft, this year). Close to 4000 Java developers, as well as team leads, and software project managers come together from all over the world for 5 days. And just like Devoxx, Brian Goetz, one of the keynote speakers, does not need much introduction: He is a Java and concurrency expert, having written one of the best books in this field, and serving many JCP Expert Groups and working at Oracle as the Java Language Architect. In other words, when a heavyweight Java expert such as Goetz gives a keynote at a conference such as Devoxx, and talks about the upcoming version of Java 8, and stressing features such as lambda expressions and streams, thousands of developers do listen, and they listen very carefully.

So far, so good. But there is one thing surprising. Some of those developers, I, for example, feel like listening to the aspects of human psychology and the finer points of marketing to the masses, albeit technical masses. The reasons I felt like that can be summarized as the following:

* Brian Goetz likes to call Lisp and Smalltalk scary languages. Well, ok, I can get that, not technically, but in terms of psychological manipulation, in other words, marketing. (It is really surprising, because Goetz knows better, as someone of high-caliber).

* According to Goetz, who want to talk about new features of Java 8, such as lambda expressions and Streams, programmers are lazy and it is very easy to scare them. Well, maybe not all of them, but Java is so hugely, unbelievably popular, so ubiquitous, and hence there are so many millions of Java developers that a large proportion of the “market” is made up of lazy programmers who are scared easily. So you have to be careful. Once again, I understand this from a marketing and psychology perspective, even though I feel baffled by the lack of clear definitions and technical arguments.

* According to Goetz (and the audience) most of the Devoxx participants have already used languages such as JavaScript, Python, C#. Some even dared to touch Scala. This means the advanced and new features of Java 8, such as lambda expressions are nothing scary. So there is no reason to be scared.

* Interestingly, following from the fact above, we can deduce that features such as lambda expressions are neither new, nor advanced or scary. A quick look at Wikipedia shows that some of those features existed about 50 years ago, used daily by thousands of programmers, some of them not even as smart as Goetz. And Goetz himself says that Java 8 takes most of those features are from popular languages such as C# and Scala. Apparently Microsoft programmers are not scared that easily. Who knows. Maybe we can ask Erik Meijer.

* Brian Goetz claims that some of those features, even in a slightly more “advanced” form can be very complex. Interestingly, a few days ago Venkat Subramaniam gave a wonderful talk, demonstrating those features and comparing Java 8, Scala, and Groovy. What he said was crystal clear: What is unfamiliar is not complex, what is familiar is not necessarily simple. So, … Venkat vs. Goetz, let the fight begin! 😉

* Goetz also consistently referred to “Ivory Tower” and clearly hinted at a slightly negative interpretation and then connecting this to the market, market size and finally lazy and easily scared programmers. I started to think like there are some overlords with 300 I.Q. and hordes of minions who churn out code in platforms and languages that are designed not to scare them and make their little brains explode. In between, there are good people who know what overlords talk about and try to bring a little bit of comfort and painkiller to the hordes of minions. Am I dreaming? Or is it the market forces?

* Continuing with the Ivory Tower, as a side note, I want to mark the fact that, you don’t need to graduate from MIT to know about lambda expressions and other “advanced stuff”. Many universities in Belgium teach them and if you think even Belgium is Ivory Tower, then I can simply point to the fact that 2nd year or 3rd year students from the Computer Science programme of Istanbul Bilgi University knew those concepts and used them without any problems. I’m not talking about Ivory Tower, but a very small university that is located in a country whom most of the readers from the United States probably never heard of. That’s as un-Ivory Tower as it gets, and that was the situations many years ago, when I was there.

* Brian Goetz also said that he does not want to use scary terms such as Monad or Catamorphism. Probably even this term dropping had sent shivers down the spine of poor audience. But, thanks to the great atmosphere and many commercial and real life developers watching him, Goetz said Java 8 was embracing more of a functional programming paradigm. Well, he also added that they don’t officially use the term “Functional“. Because… yes, you might have guessed, it can be scary.

* Goetz also added the important fact that Java 8 started to support immutability, and this style of programming. This reminded me of good old Scala, and functional programming but then Goetz said that even though immutability might be related to functional programming, they don’t use the term “Functional”. Then I came to my senses.

Now, I have to say that it was a nice keynote speech. I learned a lot of new things. And they were not technical. I now have a much better understanding about what it means to do marketing to the masses, no matter how technical they are (after all they all share the human psychology). I also think that I understand what kind of strategic plans the masters of the universe design.

Irony and jokes aside, I really expected less reference to psychological aspects, much less stress on marketing concerns (after all those concerns are Oracle’s concerns, and not the developers using the platforms and languages), and close to a zero amount of not-well-defined-at-all terms. At least from heavyweight thinkers and coders such as Goetz. After so many Internet discussions, blog entries and having read and experienced a bit with what programming language research has achieved so far, I really feel extremely tired when smart people such as Goetz repeat the “ivory tower versus real life” false dichotomy again and again, with a not so healthy dose of “those millions of easily scared programmers that make up the market and hence can affect our market share” mentality.

PS: It was funny when Lars Bak gave a great talk the other day, talked about Dart and completed his talk by saying “Dart has lambda expressions, we implemented it right from the start, and it was not that hard.”

Thanks for this interesting review of that keynote! I have often wondered, why the team around Brian Goetz has been heading towards a “decent compromise” so strongly from the beginning, both from a marketing AND technical point of view, instead of adding more boldness to how Java 8 is advertised.

Java 8 is what we have all been waiting for, for so long! After all, the introduction of lambda expressions and defender methods (equally impactful, if not as often advertised!) is one of the most significant improvements to the Java language since the very beginnings.

While the above article certainly wasn’t well received with the .NET community (and even Erik Meijer himself slightly smirked at it), it did get quite a bit of love from the Java community. In other words, the Java community is ready for Java 8 goodness. Let’s hope Oracle will start advertising it as the cool new thing that it is.

After all, java 8 lambda are “just” syntaxic sugar to avoid SAM-based anonymous classes,
so I still don’t understand why it was so long to get that (useful!) improvement.
It would have been better to have the lambda syntax earlier without InvokeDynamic-based implementation (at the compiler level, no need to change the JVM) …
And there is still not real function type in Java 8.

The idea of the lambda closure has been around since the late 1960’s, and in languages since not long after that. I started using them in my second year studying Computer Science at a small unknown university in the United States. I have no idea why it has taken so long for Java to support them, and I’m equally perplexed why anyone would view them as difficult or confusing.

Starting with full disclosure: I work for Oracle, but the views in this response are mine and do not necessarily represent those of my employer.

I think there are a number of points to address in your article, and the subsequent responses:

The audience at Devoxx is not a good representation of the average Java developer. I’ve attended Devoxx (and Javopolis as it was) for many years and Devoxxians tend to be highly skilled developers with a lot of experence. Having traveled the world talking to developers, I can tell you there are many, many developers who are from a different demographic. They understand Java and OO. However, if you’ve not used a functional language before, the concepts do require a different way of thinking. Many universities do teach functional programming as part of their CS course, but many do not. There are plenty of Java developers who have no idea what a monad or catamorphism is. These developers are the ones that Brian is addressing when he talks about Lambdas and functional programming being “scarey”. James Gosling always described Java as a “Blue collar programming language”; it was designed to get the job done, but without necessarily having all of the academically inspired features that some other languages have. This is one reason it’s so popular.

The introduction of Lambdas and the changes to the Collections API are primarily to make developers lives easier by not having to concern themselves with writing inherently serial or parallel code. It’s not about making Java more functional as a language.

Oracle is marketing Lambdas to developers: Devoxx had a hands on lab (which I helped present), and sessions from Brian and Paul Sandoz as well as the keynote. That’s pretty extensive coverage for something that is not yet a released product. All the developer events I attend and talk about Lambdas and Streams at have packed out sessions. What is really interesting is the questions I get afterwards. There are a lot that demonstrate that the finer details (and even some of the broader ones) are not immediately obvious to many developers. Just yesterday some developers were struggling to understand how an infinite Stream could be used.

Making changes to the syntax of Java is hard when you don’t want to break backwards compatatbility, it often involves compromise. For me, as a long time Java programmer, the way Lambdas have been added and the design of the Streams API feels right. The simple fact though is, you can’t please all the people, all the time.

Thank you very much for taking the time write such a detailed comment. I have no difficulty in understanding the commercial concerns of Oracle (and before that, Sun Microsystems) in advertising Java and new versions. Just like I have no difficulty in understanding the fact that there are a myriad of programmers who might have not gone beyond their Oracle Java certifications tracks at all, happily churning out code for enterprise systems that make actual money for themselves and their customers as well. And last, but the least, I also see Oracle’s training and education efforts, including workshops at conferences, very justifiable commercially.

My blog entry was mainly focused on the fact that we are in 2013 and there’s no need to refer to emotions and fuzzy, not-so-well defined and almost always relative concepts such as ‘scariness’ (that let one to always move the goal posts according to his liking), when describing and/or announcing technical features that are long due. There’s nothing wrong in accepting that Java, as a language, is moving slightly faster (or sometimes slower) than a glacier and this will not change anytime soon because we, as humanity, including universities, are not doing a good enough job in educating software engineers and/or programmers. (Though, this should never prevent us from engaging ourselves in the pursuit of a better state).

I am sorry to say, I think you missed most of the point of my talk. Yes, I did talk about how programmer psychology in the large influences language design; the success or failure of programming languages is often based in no small part on non-technical factors, which seems an entirely reasonable topic for a keynote. But, the references to “scary” are presented mostly out of context; these were all made in the historical context of 20 years ago when Java was being designed. (For example, *I* did not call Lisp and Smalltalk scary; I was quoting James Gosling.) Not everyone has the luxury of hearing it first hand from the source, so I did my best to capture and present what James and others were thinking at the time.

You might have been surprised to hear the words “scary” at all in a talk about programming languages, but the pseudo-quantitative graphic depiction is a pretty serious distortion of what was actually said.