Two days ago, at a conference in the Netherlands, I was fortunate enough to talk to Brian Goetz, who gave presentations on the future of Java, Project Coin, concurrency, Fork-Join, and lambda expressions. I asked him questions about the absorption of Sun by Oracle, mobile Java, and that the pressure has been going on in press on Oracle lately. Below is a brief description of what I learned on this interesting day.
For those who do not know: Brian Goetz, Senior Java Language Architect at Oracle, is working on developing the Java language and platform. In recent years, much progress has not been observed due to the fact that Sun has practically dropped out of the "game", but with the absorption of Oracle there are serious prospects, clear plans for release (roadmap) have been developed.
Let's start with the fact that the new Java version will be divided into two releases, Java 7 and Java 8. Java 7 will consist of many things that “have already been done for the most part”, Java 8 will also include “things that still stand seriously work. So, the development plan is as follows:
Java 7:
')
InvokedynamicProject coinUpgrade
ClassLoader ArchitectureMethod to close URLClassLoader
Upgrade Concurrency & Collections (including
Fork-Join )
Unicode 6.0
Local improvements
NIO 2TLS 1.2
ECCJDBC 4.1
Translucent & Shaped Windows
Heavyweight / Lightweight Component Mixing
Swing:
Nimbus &
JLayerUpdate to the XML-Stack (JAXP, JAXB & JAX-WS)
Java 8:
Modularization of the JVM
Project lambdaAnnotations on Java types
Project Coin part 2
Swing JDatePicker
Approximate release dates: Java 7 - somewhere in the middle of 2011; Java 8 - somewhere in 2012.
One important thing is missing from the list, namely mobile java. To my question about the complexity of developing Java (and launching Java applications) for smartphones and the lack of a unified platform, Brian answered that, despite the development of technology, the cheapest phones still could not be dispersed, which makes it difficult to create a single Java platform for desktops and mobile devices. Ideally, there should be no difference between Java SE and Java ME, they should be the same platform and the launch of applications on mobile should be as transparent as on desktops (for example, Java Web Start). Oracle has no concrete plans yet, so all Brian could tell me was “they are working on it.” In fact, this statement is not as negative as it may seem at first glance. Brian explained that the difference between how Oracle spreads information and how Sun did it is significant. So, Sun loved to promise a lot, and most of these promises were never kept. Oracle does not make any statements about things not yet announced in official plans. Oracle has many very large customers who make their decisions according to public information coming from Oracle, so they are extremely careful in their statements.
(Update): Brian sent me an email, explaining that all mobile things are described in a completely different release plan - for Java ME. Which means that Oracle, at least for now, is not thinking about combining the plans for the release of SE and ME. I think this is an annoying nuisance: first, Sun talked about platform integration (although this may again be one of those very promises); Yes, and I myself believe that the unification of platforms is important, since in our time mobile devices and desktops are getting closer. If there is no progress in resolving this issue, one of the main principles will fall under the threat - “write once, it will start everywhere”. So we hope that Oracle has thoughts on this, even if they don’t talk about it to the public. (/ update).Brian was still joking about an old story with a little angel and a damn on his shoulders appearing in films. In Oracle, the situation is different - you have a little angel sitting on one shoulder and a little lawyer on the other.
However, let’s leave a joke - Brian said he was pleasantly impressed with the quality management at Oracle. He thought that managers at Oracle were just very smart people who really knew how to run a company. In fact, there is not much difference between cultures, as you might think. They get along well with the staff, and for the first time in N years, Brian really had a budget for hiring specialists.
When asked about the pressure on Oracle, Brian explained to me that the bottom line is that Oracle just says little or nothing at all to the media. Press releases are carefully considered. Therefore, in many cases (for example, Apple’s refusal from the JVM), the media provides only one point of view on the question, and Oracle does not respond to this. People think that everything is bad, they add to this the appropriate reputation of Oracle as a commercial company and - voila - this is another criticizing article on the news site. Brian assured me that Oracle is really interested in Java, but it stakes on getting money not in the short term, but in the distant, focusing on the future. In the end, what could be better for Oracle other than Java, which, in fact, is now one of the most popular programming languages ​​in the world? For many years, there has been a first serious progress.
During the day, Brian made several reports on concurrency, the Fork-Joun framework and, what seemed to be the most interesting, about the Lambda project. Lambda project is flawless. Lambda expressions are translated into SAM types. A SAM type is the Single Abstract Method type, that is, a single-method interface or an abstract class with one abstract method. Then the Lambda expressions are of the same type as SAM. In addition, Lambda expressions can be used wherever SAM is used now, for example, for ActionListener, Comparable, Cloneable, etc., making it all compatible with much of the existing API. I will not go deep, especially since it will take a lot of time, and I will not explain it so clearly, as Brian would have done, but I can’t resist and bring a piece of code:
As you can see, besides Lambda expressions there will be many different possibilities that a programmer can use to achieve optimal use of Lambda expressions. Lambda expressions will make programming for multi-core machines easier. In the same aspect, the Fork-Join framework will be very useful.
When I said SAM-conversion was a great idea, Brian tactfully pointed to Joshua Bloch, who suggested it.
Finally, I asked about Java on Apple devices such as iPhones and iPads. The answer was as mysterious as it was hopeful. He said that Larry and Steve are good friends ...
At this end. One day with Brian Goetz, and I have to tell you - at first, when I heard about buying Sun Oracle, I was horrified, like many others. A big bad boss who only cares about money will destroy Java. But over time, as official announcements and plans began to appear, I began to look more positively at things. Still on guard, but less biased. Then, after reading the articles on JavaOne, I began to think that the absorption of Sun Oracle would even be useful for Java. And finally, after the conference with Brian, I'm sure of that. This will be useful for Java. Finally, I was given the chance to talk to someone who really knows what is happening, and now I’m absolutely sure that Oracle will try to keep and raise the level of the Java platform!