Tuesday, 18 March 2014

Netbeans : Oracle's IDE for the Java Platform

Transfer Solutions, a consultancy, education and managed services company in Leerdam provides a Transfer Café every month. Since last year it has been open to non-Transfer Solutions personnel. I decided to go Thursday, 13th of March 2014, 18:15 as I was interested in the subject matter discussed that evening.

There to tell us all about NetBeans was the Principal Product Manager, Geertjan Wielenga1, of Oracle.

One of the reasons for the existence of NetBeans, is that Oracle would look silly to release a brand new version of Java or JEE, and not have anything available for Developers to play with it. We as developers would have to wait until Eclipse, JDeveloper or IntelliJ catches up. So it just has an excellent upside for them.

One of the advantages of Java and JEE is that they are standards. This means there are definitions for what file does what and goes where and what format it can have. This makes it ideal for IDE's to automatically generate entire file structures based on user choices.

One of the primary requirements for NetBeans is to provide an extremely (seriously!) low threshold to start designing Java and/or JEE software.

Some of the items that came up during the talk:
  • NetBeans makes it very easy to start learning and programming for a starting Java developer.
  • NetBeans has everything! And if it doesn't have it, it is likely that you won't need it.
  • NetBeans has good integrated Maven support
  • Tutorials can provide you everything from a simple HelloWorld application to an entire Web Application Online Shopping cart on an Application Server
  • NetBeans Website apparently has a weekly Newsletter.
  • NetBeans can show you the Graph of your Maven Dependencies, and you can change the graph, and therefore mutate your dependencies, and export it to image. How cool is that?
  • NetBeans supports The Cloud, for example Amazon Beanstalk out of the box.
  • You can easily import your Eclipse Coding Guideline Settings (formatting and the like) into NetBeans.
  • There's a hook that allows you to automatically do stuff to a file right before you try and save it. For example "Organize imports". (Tools-Options-Editor-On Save)
  • Working with many different projects, it is difficult (especially when using multiple branches) to see to which project the file you are editing belongs. Therefore you can have coloured tabs! (Tools-Options-Miscellaneous-Windows)
  • If you are like some people, that have many files open in the editor, it gets difficult to keep track of them all. There are many solutions. One is the possiblity to indicate that you wish to see multiple lines of tabs (instead of scrolling). (Tools-Options-Miscellaneous-Windows)
  • In order to change the font-size of the editor (for example during presentations), try Alt-MouseScroll.
  • To easily change a lot in a file in the editor, try "Blockselection".
  • There is a nice GUI designed for Swing. Unfortunately, if you wish to use a GUI designer to create JavaFX user interfaces, you are forced to use SeamDesigner, an external tool.
  • NetBeans has integration possibilities for PhoneGap
  • NetBeans can easily be used for developing HTML5, CSS and JAVASCRIPT by means of plugins to the Chrome browser. Updates to your web files will be immediately visible in the Chrome browser, without even saving the file. Also, selecting an element in the Chrome browser, will immediately show you where in which file the item is put.
  • NetBeans has support for several Javascript frameworks. Especially AngularJS seems to be very easy to use.
  • Bookmarks is a very nice feature allowing you to bookmark lines of code to jump back to when you need it.
  • NetBeans is well integrated with Bug reporting tools, like Bugzilla and JIRA.

My Questions

Software integration, how does it work?
NetBeans provides, in the Services Tab, several hooks into for example Jenkins. Interesting tidbit is that the only difference between Jenkins and Hudson plugin is the Name.
How well works NetBeans with Android Development?
Well, there's a plugin/project that is being actively developed by some people called NBAndroid5. Currently there is nothing native set up in NetBeans and there won't be for the foreseeable future. The NBAndroid project could use some funding, though.
JavaDoc, why is it in a separate tab? Why not similar to Eclipse, where it shows up as a tooltip under the mouse cursor?
Interesting that you should mention it. It was a much requested feature by (former?) Eclipse users, and has been implemented in NetBeans 8.0
What is your experience with Plugins? Compared to, for example, Eclipse, where some are able to destabilize the IDE?
Well, since a lot of what you need is already available in NetBeans without the need for Plugins, the plugins landscape is not as vast as Eclipse. With that in mind, the core functionality of NetBeans is already very big, and very very stable.
Do you eat your own dogfood?
Well, of course! We develop NetBeans inside NetBeans.
How do you keep a big beast like NetBeans contained?
NetBeans is actually designed to be very modular with loose coupling, so there are teams working on the different modules of NetBeans. It works out very well. For more information on how we as developers can make use of this modularity for our own applications, see the chapter on NetBeans Platform below.
What does NetBeans use? Maven or Ant?
Ant is the default. If you choose "Create Java Application", you will get an Ant-build java project. Select "Maven Projects" if Maven is what you need. If you wish to port your application that was created using Ant to Maven, you have to do it by hand. There are no convenient tools for doing it for you.

NetBeans as a Platform

NetBeans as a Platform (Let's call it NAAP, I've not heard the term before anywhere, but it's going to have to start somewhere.) is a way of leveraging NetBeans to quickly build a Rich Desktop Application using Modular components, of which NetBeans itself is composed.

You can build your own Rich Desktop Application, in the same way that NetBeans does it. And let's be honest here, NetBeans is doing a fine job.

The advantages are legion:
  • can accommodate many users
  • can support very large applications
  • can create applications for 'the long haul', need to be stable and extendable for many years
  • can accommodate many applications, large organizations with many users usually do not have one single application, but often over a hundred.
  • modularity is key here, in order to keep maintenance manageable and development in parallel between different teams
  • loose coupling, between modules, is also key
  • can provide a consistent UI over many applications, while you can focus on the Business Logic. No more applications that are notorious for their flawless business logic and their crummy UI/Layout/Mainframe Forms, but flawless looking clients.

For screenshots see [2].


[1] GeertJan's Blog
[2] NetBeans as a Platform
[3] NetBeans Platform for Beginners
[4] Transfer Solutions Presents: Transfer Café: NetBeans: Oracle's IDE voor het
Java Platform
[5] NBAndroid
Adam Bien - Nothing compares... to NetBeans

No comments:

Post a Comment