by Ivan St. Ivanov
In the next few days I will try to cover the key stories and messages that I caught while attending the conference sessions and events. Of course, I will start with the
As always, we have the three keynotes in the community day of JavaOne: the strategy keynote lead by Oracle’s vice presidents, followed by the sponsor keynote from IBM and finally Oracle architects and distinguished developers gave us the technical keynote. The good thing this year was that the whole session returned to Moscone center.
The big message today (and not only from the keynotes) was that the technology world is moving to the Internet of Things (IoT) and Java is the best platform to make it happen. What does this IoT term mean? In the recent years there’s a boom of non-human devices that can connect and communicate with each other. And in the near future the number of these devices will grow more and more. People in Oracle see that and make sure that Java virtual machine (ME or SE embeddable) is running on every possible device. In the recent years Java ME was far behind Java SE: its different profiles (CLDC and CDC) had very limited subset of the SE APIs and the language level was at Java 1.3 and 1.4.2. So the plan is for the next release (Java ME 8) to bring language features like annotations and generics to that edition as well as more APIs from the JDK.
On the other side of the fence we have the devices and the one that has most attention in the last couple of years is the Raspberry PI. It’s a very cheap computer (25-35$) that has a 700MHz ARM processor, 512 MB RAM, SD card, very decent GPU, USB, HDMI and Ethernet ports. It has also low-level GPIO port, where you can plug various sensors for example. But most importantly: it has Linux operating system installed and you can have Java on it. To that extent that you can run an application server like Glassfish for example. So the Java developers can pick up their Java skills, get the hardware and turn their home to home 2.0.
I attended a session particularly in that topic. A guy from the SouJava user group showed a demo with two Raspbery PI’s, a few Arduino’s and some home devices that offered a connection (a fan, a robot and a popcorn machine). One of the PI’s was acting as an app server hosting a RESTful service. The presenter was sending it requests to get the current temperature and humidity, which were dispatched to the Arduino’s. The latter had some sensors installed. The speaker issued also some voice commands to his phone, which resulted in making the robot turn its head on 100 degrees and the popcorn… popping corn.
But anyway, let’s get back to the keynotes. The IBM keynote was focused on the fact that nowadays developers are the most important (as opposed to the sales and marketing guys). Today with all these free tools, languages, platforms, APIs and hosting environments the path from idea to profit is smaller than ever. It takes just three steps: develop, deploy and get the money.
The speaker mentioned briefly two interesting technological efforts by IBM:
- IBM BlueMix: combine in the cloud (powered by CloudFoundry) two types of systems:
- Systems of engagement: they are based on mostly mobile applications, focusing on the processes of a regular person (how could I get to the airport, what’s the weather at my target destination, what are the best hotels and restaurants when I arrive)
- System of record: our favorite enterprise systems (HR, ERP, CRM, DataBase) that provide services consumed by the systems of engagement
- Packed Objects: an idea of how to better represent objects in memory. Think of a hashmap containing millions of entries and all the needless headers that comprise the memory consumed by the hashmap
The technical keynote started as it used to start in the last couple of years: with the state of the lambda. Finally we are very close to having it shipped. It was interesting for me to learn that the lambdas are the biggest change to the Java platform since its beginning. It’s a synchronized effort in all the areas:
- Change in the Java language with the new ‘->’ construct
- Change in the virtual machine: the authors wanted to optimize the byte code that is generated and use the invokedynamic stuff rather than generating anonymous inner classes
- Change in the APIs so that they leverage (I like this word!) the new Lambdas. As Brian Goetz mentioned: “If we don’t use lambdas in the Collection API, which looks ancient even now, it will look more ancient in Java 8”
We saw other cool stuff in this keynote. NetBeans guys are doing some great things: as of 7.4 you can change your HTML5 code in the IDE and immediately see the results in the browser, you can debug in parallel your client and server side code, etc. The JavaFX folks besides all the 3D eye candy showed their own home made tablet (called DukePad), which was based on (surprise!) Raspberry PI.
The final touch of the demo was Mark Reinhold’s vision on the future of java beyond Java 8. It includes modularization (Jigsaw), leveraging the power of the GPU (Sumatra), reified generics, JNI 2.0, memory efficient data structure (like IBM’s packed object) and many more.
The JavaOne Sunday is all about that: communities. And more precisely Java User Groups (JUG) talks, NetBeans sessions and more recently meetings about the Adopt a JSR program. This year I attended mostly talks on running a successful JUG. As a member of the Bulgarian one, I would like to bring in some experience. There are four basic topics that I would like to outline here:
Organization and mission
Every user group that I listened to had kind of a board. It’s a group of people that makes everything running. Sure you can’t run a user group alone, as all of the members have their daily job and usually don’t have too much time for JUG activities such as: finding venues, organizing meetings and hackathons, finding topics and speakers, bringing sponsorship, etc.
A good user group has to have also its mission so that the board can concentrate on organizing events around that. This mission can be broad, but surely should be written down and made public. For example something like: “Share knowledge amongst the Java developers in Bulgaria. Participate in one of the Adopt a JSR programs. Help in networking between developers and recruiters.”
A successful JUG should organize consistently events (mostly talks). These should happen on a regular basis and once a month is a good starting point. Most of the presenters shared that they have strict day for that, for example every third Thursday of the month.
Events should also follow strict agenda. Something like first fifteen minutes for pizza and networking, next fifteen minutes for announcement and sponsored talks (read on about that), next one hour or one hour and a half for the real talk(s) and finally time for networking and beer.
The venue where the meetups are organized should also be as consistent as possible. Or at least should be easily reachable, especially in the end of the business day when there’s a lot of traffic in the city.
Right now our Bulgarian JUG does not have direct sponsors. Of course we use the Telerik Academy conference room whenever we need it, but we do not consider that as sponsorship. The user groups which I watched today have developed this much more (most probably because they are in the US, where everybody thinks in business terms ;)).
Basically there are two kinds of sponsorship. The easy way is when the sponsor just buys the food and drinks or provides the venue. For that they are allowed to have a 15 minute session. However, this should not be a high level talk that just presents sponsors’ product or their hiring proposals. It should be 75% technical with very little sales pitch at the end.
The other kind of sponsorship is the one when the JUG is registered as a non-profit organization so that it can directly receive money from the companies that wish to sponsor it. This way the user group board has the funds to hire a venue, to buy the giveaways and even to invite speakers that do not live in the area.
Where to find sponsors? First among the JUG members’ employers. Then in the technological companies in the area. How to persuade those companies to sponsor the JUG? By proving that our members are very talented and motivated enough to attend the talks.
Having regularly JUG events brings another challenge to the board: they have to find speakers for every meetup. We have a lot of talented people in Bulgaria, but some of them don’t want to speak in such events, others are not good speakers, etc.
Another aspect is having a big Java rock star give a presentation now and then. Unfortunately Bulgaria is not often visited by such rock stars, so the only way to get them is if someone pays for it. It could be a sponsor, but also it could be a company that will send them to evangelize a product or technology (think about Oracle paying Martijn Werburg to come to Sofia to pomote Adopt Open JDK). And here by paying here I mean things like flights and hotels. Most of the Java rock stars don’t require fees for talking to JUGs.
Of course the board should be well prepared for situation when there is no speaker found. So they have to be ready to give a talk on a certain topic. Which does not mean that they should be the only speakers.
The community day finished with the community awards event. The leaders of 11 projects got the Duke Choice Award. One of them was the University of Belgrade, nominated for their achievements in the neural networks. I am wondering is there a chance that one of the big Bulgarian Universities gets such an appreciation ever? Just wondering…