Tuesday Nov 24, 2015

YouTube: Graal VM Multilanguage Shell

Watch a quick screencast showing Christian Humer from Oracle Labs at JavaOne 2015 demonstrating the Graal VM FastR/Ruby/JavaScript interopability by means of the Graal VM Multilanguage Shell:

Monday Nov 23, 2015

NetBeans at Java User Group Cologne

I had a great time at the Java User Group Cologne tonight, presenting the best and latest features of NetBeans IDE 8.1, followed by Michael Mueller, who talked about Java 8, lambdas, and streams, as described here.

Pretty big turnout, as can be seen below. 

I demonstrated the new and cool features in NetBeans IDE 8.1, including Maven, Java EE, JavaScript, Oracle JET, and Node.js. The title of the session was „Free Open Source Tools for Maven, HTML5, IoT, and Java EE“, in which attendees learned about the latest enhancements and cool features of the free, open-source NetBeans IDE, used around the world, from engineers at Boeing and NASA to Java architects and original founders such as James Gosling himself.

Here's me in action: 

I also talked about and demoed the new Oracle JavaScript Extension Toolkit (JET), which I really think is a pretty cool solution for JavaScript development needs. 

During Michael's talk, he introduced his book-in-progress "Java Lambdas und (parallel) Streams", currently only available in German, shown below. I was really impressed by the structured way in which he presented the problem statements around lambdas and streams and gradually built up his argument.

It was a great evening. A copy of "Beginning NetBeans IDE for Java Developers" was given away, and the 30% discount for the e-book via Apress (valid until end of November!) was also promoted.

I enjoyed the evening, there were many questions and discussions, and Cologne is a great place to visit. 

Friday Nov 20, 2015

New YouTube Channel for Play Framework in NetBeans IDE

Pedro Antonio Hidalgo GuzmánPablo, the author of the Pleasure Play Framework plugin for NetBeans IDE, has put together a brand new YouTube channel, that's growing by the day. Get to it here:


Here's how it looks right now: 

Aside from this new plugin, the above YouTube channel is a really great initiative to help newbies with this plugin get started and provide overviews of the provided features.

Tuesday Nov 17, 2015

YouTube: Share Your Learning Curve

One of the most inspiring talks that underpins this blog (alive and kicking 10 years or more later) as well:

Infusing arguments with emotion, etc, plus learning as you go along, these ideas are really the basis of what this blog has been and continues to be about.

Tip: Bookmark the above YouTube clip, go to your Google calendar, and set a date every 3 months to re-watch it.

Monday Nov 16, 2015

NetBeans IDE 8.1 Integrates with Chrome Browser

With the release of NetBeans IDE 8.1, the NetBeans Connector plugin for Chrome has been updated. A frequently observed problem, whereby the plugin needed to be reinstalled whenever you deployed an app to Chrome, has been fixed. Everything works seamlessly now.

To see what the NetBeans Connector plugin can do for you, watch this screencast, giving you a complete tour through the features of the NetBeans Connector plugin for Chrome in the context of NetBeans IDE 8.1, including various brand new features:

Click here to get the plugin! It is free.

Saturday Nov 14, 2015

VRL Studio on NetBeans Platform

Michael Hoffer's VRL Studio was center stage during Devoxx, at the Oracle booth, to support Stephen Chin's 3D printer.

I spent some time during Devoxx porting the application to the NetBeans Platform. Modularity, docking framework, pluggability, and more are all features that the NetBeans Platform can provide VRL Studio.

The main thing that's not working right now is the integration with Groovy. Somehow the classloaders in VRL Studio are not finding Groovy on the classpath of the NetBeans Platform.

Friday Nov 13, 2015

YouTube: What's New in NetBeans IDE 8.1?

I had the honor of having a conversation with Lucy Carey (@Lucyrushi) from Voxxed during Devoxx 2015. At the time, I wasn't so sure how it would turn out, thought I was a bit rushed, though in the end it was quite good and represents the latest state of NetBeans IDE well.

Watch the short (about 5 minutes) conversation here:

Thursday Nov 12, 2015

NetBeans IDE 8.1 Plugin: Entity Expander

A very handy plugin, in my humble opinion since I created it myself, is the Entity Expander. (Earlier blog entries are available on this, e.g., here.) 

Take a look at this plugin if you're doing POJO-based development, i.e., plain old Java objects are the starting point of something larger, via some kind of framework or other technology. Right-click on any Java class and apply a template to it:

For example, if you have a POJO named "Person", with two String fields, named "name" and "city", and then choose "Vaadin Form" above, all of the below will be generated:

package personmanager1;

import com.vaadin.ui.Component;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.TextField;
import org.vaadin.maddon.fields.MTextField;
import org.vaadin.maddon.form.AbstractForm;
import org.vaadin.maddon.layouts.MVerticalLayout;

public class PersonForm extends AbstractForm {
    private TextField name = new MTextField("name");
    private TextField city = new MTextField("city");
    protected Component createContent() {
        return new MVerticalLayout(
                new FormLayout(

Either use an existing template or one that you create yourself. (Feel free to add more templates to the sources on GitHub.) You'll see placeholders are available so that you can create your own extender template. If you click Create above, you'll need to specify a name, and then you'll get a template in the editor like this, which you can tune:

package ${package};

import javax.swing.JFrame;

public class ${object}Frame extends JFrame {
  <#list fieldsAndModifiers as field>

    public ${object}Frame() {

Also, when you go to Tools | Templates, you're able to edit the templates defined by the plugin, as well as those you create yourself:

The plugin is ready to be used in NetBeans IDE 8.1:


Its sources are available on GitHub, you are welcome to fork and extend however you like:


It has been approved by the NetBeans verification community and can therefore be installed via the Plugin Manager, which you can get to via Tools | Plugins:

Indeed, the display name and description could be a lot better, will work on that for the next release of the plugin. 

Your feedback is more than welcome! 

Wednesday Nov 11, 2015

NetBeans IDE 8.1 Plugin: One Click Open Sesame

Yet another plugin I have made available for NetBeans IDE 8.1 is "One Click Open Sesame":


The source code is available here and you are welcome to fork it:


Simplest of all is to install the mysterious 'ocos' (the initial letters of 'One Click Open Sesame') directly from the Plugin Manager, under the Tools menu, in NetBeans IDE 8.1. The verification community has approved the plugin, which is why it is in the Plugin Manager:

Indeed, the display name and description could be a lot better, will work on that for the next release of the plugin.

Once installed, open a file by selecting it. No double-clicking of files should be needed. If you find that you can't close a file that you've opened, try closing it again after selecting a folder instead of a file in the explorer window. Maybe there could be some glitches also in other scenarios, though basically it works as described.

Tuesday Nov 10, 2015

NetBeans IDE 8.1 Plugin: Maven Hierarchical View

Another plugin I have made ready for NetBeans IDE 8.1 is the Maven Hierarchical View:


It is also available on GitHub:


It's been verified by the NetBeans community and if you go to Tools | Plugins, look for "MavenHierarchicalView", and you'll be able to install it directly into NetBeans IDE 8.1. 

When you've installed it, you'll be able to browse into modules within modules and you won't need to open projects separately, for browsing purposes:

The above project comes from here: https://github.com/jamesward/maven-multi-module-example and can be checked out via Git support in NetBeans and without doing anything at all, no configuration, it simply works in NetBeans IDE. 

Note: The plugin is really quite simple, take a look at the GitHub repo linked above. It does what it does, it works for its purpose, specifically if you're browsing through your code and you don't want to have multiple different projects open at the same time.

Monday Nov 09, 2015

NetBeans IDE 8.1 Plugins: HTML5 Palette and HTML WYSIWYG Editor

Here are two more plugins I have made available today for NetBeans IDE 8.1, specifically for working with HTML:



Sources of the above, Mavenized and waiting to be forked:



Both are in the process of being verified, once the community has completed that process, they will be available under Tools | Plugins. Until that moment, just go to the pages above, click Download, then go to Tools | Plugins and install the downloaded NBMs via the Downloased tab.

What do these two plugins give you, exactly? When you open an HTML file, you should see the HTML Palette (or press Ctrl-Shift-8) contains a bunch of new HTML5 snippets, as described here:


Picture of how you can set things up: 

The other one is more experimental and may not work exactly how you'd like, though it's worth giving it a try. It is a JavaFX WebView on top of the HTML Source Editor, as described here:


Sunday Nov 08, 2015

NetBeans IDE 8.1 Plugin: Cheat Sheets

One of the plugins I created with which I am most satisfied and which I consider to be most useful is... the Cheat Sheets plugin:


Rather than needing to go somewhere in the Options window to see the available code templates and key bindings, this plugin embeds two windows right next to the editor, to display all those code templates and key bindings exactly where you need them to be so that you can quickly see what's available right at the point where you're using them. 

I have checked that it works in NetBeans IDE 8.1 and uploaded it to the above location, as can be seen via the link above. However, before I did that, I Mavenized it and moved it to the following GitHub repository, so anyone is welcome to fork it and extend it:


When you install the plugin, you'll have two news windows available from the Window menu, named "Code Templates" and "Key Bindings". Especially the Code Templates window is interesting, showing you all the templates you can type (and then press Tab or whatever key you have defined as the expansion key in the Options window) and then the template will be expanded to a full snippet of code, as shown in the Expands To column. (The Description column can be excluded if you don't need it via the small button to the right of the Expands to column.)

For example, here's a JavaScript file with the available code templates shown in the Code Templates window:

And here's a Java file with the available code templates shown in the Code Templates window:

Take note of the "Context Sensitive" checkbox at the bottom of the window, which is checked by default, so that the Code Templates window shows the code template applicable to the file type of the currently selected file. If you uncheck the checkbox, the code templates will not change when you change context, you'll need to go to the drop-down list manually and select the code templates you want to see.

Currently, clicking an item in the window does not add anything to the editor, that's a feature that would be cool to have and that I'd like to look into sometime or someone else is welcome to do that too.

Note: I have also indicated that the plugin should be verified for inclusion in the Plugin Manager, which is a process that should be completed soon. Thanks to Benno Markiewicz for help with getting the Mavenized plugin set up for verification.

Saturday Nov 07, 2015

30% Discount: "Beginning NetBeans IDE for Java Developers"

Good news—until the end of November 2015, a 30% discount is available for the e-book version of "Beginning NetBeans IDE for Java Developers".

Also note there are bulk offers of Apress books too: https://www.apress.com/corporate-sales/.

Friday Nov 06, 2015

NetBeans IDE 8.1 Fits the Pieces Together

All over the world, the news is spreading. NetBeans IDE 8.1 is here. Pick your language and you'll find somewhere to read about new features, enhancements, and community-related news.

Here's the tip of the iceberg about how NetBeans IDE is fitting the pieces together of the technology puzzle, as well as fitting communities and individuals across the world together and connecting developers with each other:





Also, something that I have seen many people appreciating a lot is the notification you'll get about the fixed issues that you've submitted. Here's mine, really cool to get this message and be reminded of the connection between the issues I have identified and the current release:

Plus, hurray, it's my birthday!

Thursday Nov 05, 2015

Trip Report: JFall 2015

When you're running a conference that reaches a certain capacity and you've exhausted a variety of conference centers, the logical next step is to "do a Devoxx", which means you end up in a movie house. Jfokus in Sweden started doing that some years ago. And, from this year, JFall in the Netherlands has started doing the same thing, with an attendance figure of 1,500.

Looking at this pic, of the opening keynote session at JFall on Thursday, 5 November, in a movie house (more like a movie complex, i.e., like where Devoxx itself is held) the crowd is so massive that it is difficult to imagine that the very next week a similar crowd will  be in a similar movie complex in Antwerp (about 2 hours away from the movie house below), discussing similar topics. How more alive can Java be than it is right now, with so many conferences happening all at the same time (over the last week or so, there's been JavaOne, W-JAX, Java2Days, Java Day in Kiev, and JFall, and I'm probably omitting about a dozen others, all connected to the Java community around the world). Anyway, in this pic you see the crowd in the opening keynote at JFall today:

What were the most popular topics at JFall? You're not an especially astute conference attendee if you immediately respond with "microservices" and "Docker", since those two themes are so popular right now that it's no longer a surprise to see them in various forms in the program:


Though international speakers were in attendance, the majority were local Dutch speakers, all of them with very strong presentations, several of whom had been doing those presentations on international stages. Everyone in the Java conference world will know names such as Bert Ertman, Sander Mak, Paul Bakker, and Johan Janssen. Keynotes were held by organizations such as ING, as well as a Java community keynote by Oracle's Sharat Chander. Arun Gupta was present too, as well as Gerrit Grunwald, who talked about IoT in healthcare.

I did a session on the JavaScript ecosysem in a full room of interested participants. Everyone in the Java world is interested in what the JavaScript ecosystem has to offer and for quite some time I've been doing a session with 10 tips for Java developers entering the JavaScript landscape. The tips are things like "resist the hype", while also offering an overview of the various JavaScript frameworks, libraries, and toolkits that are available, which now includes Oracle JET, which was announced at OpenWorld and JavaOne last week.

Yes! Oracle has entered the JavaScript ecosystem with its own modular toolkit for creating enterprise applications, with a library of JavaScript components. Something else I talk about is DukeScript, which is a very nice solution for those who want to target the browser while staying with Java as the programming language.

Arun Gupta ran the Ignite sessions, which is a newish concept, focusing on very short talks, where slides switch every 15 seconds and a range of speakers talk about topics that may or may not be directly related to programming at all. One guy talked a lot about sailing, Johan Janssen from InfoSupport had an interesting talk about lego trains powered by Raspberry Pis and other IoT solutions.

Outside of microservices and Docker, there were several esoteric topics, such as Jim Weaver's overview of music composition in the Cloud. He touched on a number of on-line composition resources that I had never heard of before, such as Counterpoint Composer, backed by Cloud services:

Like other conferences that take place in movie houses, JFall provided free popcorn which was great to crunch on while attending sessions. But there were other booths with food and beverages and virtually every booth seemed to have some kind of competition or prize draw or other activity to engage passersby. The booth I enjoyed most was this one, where fresh syrup biscuits ("stroopwafels") were being produced continually throughout the day:

In short, the continual extension of the Java conference concept continues unabated. By entering the domain of the movie complex, JFall has marked itself as one of the larger Java conferences in the world, linking itself to international conferences such as Devoxx and Jfokus. The competitive edge of the booths was interesting too, i.e., not just a prize here and there, but almost each booth I walked past seemed to have something on offer in exchange for engaging with a product or entering a competition of some kind.

And, finally, as Arun Gupta has been heard saying: "JFall is the best one day conference in the world!"

Wednesday Nov 04, 2015

Data Binding with Oracle JET Components in AngularJS

Oracle JET provides a library of data visualizations.

Here you see two of the Oracle JET components, the first is a DVT (Data Visual Toolkit) component and the second a form component:

  • ojStatusMeterGauge. Powerful and cool looking. Here you see it in its circular orientation.

  • ojInputNumber. Handy to have a spinner built in, with a max, min, and step size.

What's especially interesting is that the two are in an AngularJS application, i.e., I had to avoid the convenience of Knockout two-way databindings, since I am not using Knockout in this scenario. Despite that, the two are synchronized. When the gauge value changes, the input updates and vice versa.

Also notice the various error validation and messages that the components provide.

How to achieve the above without using Knockout bindings, e.g., in an AngularJS application?

Here's my view:

<div id="gauge"></div>
Value: <input id="gaugeInput"/> 

And here's my controller. Notice that I'm not using $scope at all. I could incorporate that too, so that an actual property changes, instead of simply, as right now, the two components being synchronized without any actual property changing.

.controller('View1Ctrl', function () {
        min: 0, 
        max: 100, 
        value: 50,
        step: 10, 
        readonly: true,
        optionChange: function (e, data) {
            if (data.option == "value") {
                    value: 63, min: 0, max: 100, 
                    thresholds: [{min: 33}, {max: 67}, {}],
                $("#gauge").ojStatusMeterGauge('option', 'value', data['value']);
                console.log('New value from input:' + data['value']);
        title: "Value: 20<br>Reference Lines: Low 33, Medium 67, High 100",
        min: 0, 
        max: 100, 
        value: 50,  
        orientation: 'circular',
        metricLabel: {rendered: 'on'},
        plotArea: {rendered: 'on'},
        referenceLines: [{value: 33, color:'red'}, {value: 67, color:'green'}],
        indicatorSize: 0.5, 
        readOnly: false,
        optionChange: function (e, data) {
            if (data.option == "value") {
                $("#gaugeInput").attr('value', data['value']);
                console.log('New value from gauge:' + data['value']);

Within the "optionChange" you'd be able to set some kind of model property and then refer to it in your view.

Tuesday Nov 03, 2015

Oracle JET Meets AngularJS

Here's the "ojDialGauge" component from Oracle JET in an AngularJS application:

What's the point of doing the above? Well, by integrating Oracle JET into an AngularJS application, you're able to see that Oracle's JavaScript DVT (Data Visualization Toolkit) components can be used anywhere you like.

How I achieved the above:

  1. I forked the angular-requirejs-seed template, because the AngularJS seed is not enough since Oracle JET uses RequireJS, and enhanced it by adding JQuery and JQuery UI to it, in preparation for integrating Oracle JET components into it.

  2. I looked at the Oracle JET Quick Start template and set my angular-requirejs-seed fork up in such a way that it had as much of the infrastructure of the Oracle JET Quick Start template as possible.

  3. I rewrote the "require-config.js" file to combine the two templates.

  4. Then I wrote the AngularJS controller as follows:
    .controller('View1Ctrl', function($scope) {
        $scope.gaugeValue = 50;
            value: $scope.gaugeValue,
            title: "Value: 50 Max: 100",
            readOnly: false,
            animationOnDisplay: 'auto',
            indicator: 'needleAlta',
            optionChange: function(e, data) {
                if(data.option === "value") {
                    $scope.gaugeValue = data['value'];
                    console.log('New value:' + $scope.gaugeValue); 
            background: 'circleAlta',
            metricLabel: {rendered: 'on',
             style: 'font-size: 18px; font-weight: bold; font-family: Georgia, Times New Roman, serif;'}
  5. Which enables the HTML view template in AngularJS to be as follows:
    <div id="gauge"/>
    Value: {{gaugeValue}}

It's a start and not perfect yet, a proof of concept, and it works.

Monday Nov 02, 2015

Oracle JET in Java, Packaged for All Devices

Oracle JET, the new enterprise-ready JavaScript framework by Oracle, has been integrated into DukeScript by Toni Epple.

What does that mean and what's the point and why would anyone want to do this? From the perspective of DukeScript, Oracle JET provides data visualization components that have accessibility support built into them. From the perspective of Oracle JET, DukeScript enables you to write all your business logic in Java, instead of JavaScript, while being able to package the application for deployment to the desktop (via JavaFX), to Android (via Dalvik), to iOS (via RoboVM), and to the browser (via Bck2Brwsr).

Here's the Oracle JET Quick Start template, with the ojDialGauge component, in a JavaFX desktop application, thanks to DukeScript:

To create the above, I did not touch one character of JavaScript. Using DukeScript, I'm able to code Oracle JET applications in Java, while being able to package the application for deployment to wherever there's a JVM and an HTML view component, thanks to DukeScript. 

Great job, Toni. Read more here:


Sunday Nov 01, 2015

NetBeans: Disruptive Force at JavaOne 2015

NetBeans was certainly a disruptive force during JavaOne 2015.

That was most clearly and objectively evident during NetBeans Day itself, during Community Sunday. Several people failed to find the rooms where the NetBeans Day sessions were held—most of the sessions had to be moved to larger rooms, in some cases because the waiting list was so long that it eclipsed the number allowed to attend.

Originally, NetBeans Day had been assigned two rooms (because in the afternoon there were parallel tracks), room 309 and 310. Throughout the day, 310 would be used, while 309 was scheduled for the afternoon sessions that would run in parallel to the sessions in room 310. However, a few days before the conference, NetBeans Day was moved from 310 to 304, which was far larger and was able to hold around 700 attendees.

Sitting on the stage, this is what I saw, a mass of people: 

Standing room only, in some of the sessions: 

Aside from sessions featuring James Gosling talking about robots at sea, there were sessions about Java EE and Maven, with Martijn Verburg and Adam Bien, as well as sessions about Java on your phone, featuring several people including Johan Vos and Toni Epple.

And much more besides that.

On the party scene, there was a packed out Johnny Foley's, i.e., the Irish pub near the Hilton in San Francisco, where the NetBeans speakers and other NetBeans enthusiasts got together on the evening before NetBeans Day:

The above is a 7 second summary of a party that went on all night. Plus, the traditional GlassFish party in the Thirsty Bear turned into the GlassFish, NetBeans, and OTN party, with several NetBeans Dream Team members helping out, including Sven, Zoran, Florian, and Martin. 

Also, of course, there was the brand new NetBeans t-shirt with the brand new community-created logo "NetBeans Fits the Pieces Together":

And the above was before the conference even kicked off! See all the NetBeans sessions here, where people spoke working on projects at NASA, the US military, US navy, and many other large enterprise organizations, including Oracle customers, about where and why and how NetBeans, as a development environment and application framework, is simply awesome! 

Of course, a very important moment, as well, was the announcement of Oracle JET, the enterprise-ready modular JavaScript framework by Oracle, which has been worked on for around 3 years. NetBeans was used throughout the demonstrations and all the sessions where JET was introduced, including, for the first time, at Oracle OpenWorld. I.e., there was a JET booth at Oracle OpenWorld, where NetBeans was installed and used to demonstrate the key features of JET. The happy marriage of JET and NetBeans is based on years of interaction between the NetBeans team and the JET team, expressed in the range of features that NetBeans now has for working with Knockout, Require, and the other JavaScript frameworks, including JET itself:

There were also several people joining the NetBeans events for the first time, especially Georgia Ingham and Sophia Matarazzo, both from the amazing IDR Solutions crew, led by Mark Stephens. They did their first session ever at JavaOne, about how NetBeans IDE is an awesome development tool for their needs. 

It was an excellent week. I'd really like to thank everyone involved, it was a brilliant time. In particular, the core group of NetBeans enthusiasts, I'd like to thank a lot, most of whom (but by no means all, e.g., Toni, Mark and co, Paul & Gail, and Adam had already left the conference, as well as several others) were at the closing party at the Thirsty Bear:

Looking forward to next year, while really struggling to wrap my head around how we can do even better than we did at JavaOne 2015. 

Friday Oct 30, 2015

Farewell San Francisco

Well, it was a great week!

I especially enjoyed the several NetBeans-related events throughout the week—the parties at Johnny Foley's and Thirsty Bear, the packed out NetBeans Day (some sessions with over 700 attendees) with James Gosling keynoting two sessions, the many NetBeans-oriented sessions throughout the week, and the many small reunions with NetBeans friends from all over the world. Especially nice to meet people who keep coming back to JavaOne year after year after year. Java (and especially NetBeans) is all about community, it's been like that from the days of Sun Microsystems and continues to be that way as evidenced throughout the JavaOne 2015 week. 

The week ended on a high note—breakfast with Tinu Awopetu, well known in the NetBeans community for many years, and JB Brock, who leads the Oracle JET project, in a nice breakfast place in downtown San Francisco: 

And breakfast itself was pretty awesome, i.e., only in America is this combination an option at all:

Until next year everyone, thanks for the great times.


Geertjan Wielenga (@geertjanw) is a Principal Product Manager in the Oracle Developer Tools group living & working in Amsterdam. He is a Java technology enthusiast, evangelist, trainer, speaker, and writer. He blogs here daily.

The focus of this blog is mostly on NetBeans (a development tool primarily for Java programmers), with an occasional reference to NetBeans, and sometimes diverging to topics relating to NetBeans. And then there are days when NetBeans is mentioned, just for a change.


« November 2015