Česky   |  Deutsch   |  English   |  Español   |  Français   |  Indonesia   |  日本語   |  한글   |  Polski   |  Português (BR)   |  Türkçe   |  中文   |  正體中文   |  Your Language  
PlanetNetbeans
Planet NetBeans is an aggregation of NetBeans related musings from all over the Blogosphere.
Feeds
[RSS 1.0 Feed] [RSS 2.0 Feed]
[FOAF Subscriptions] [OPML Subscriptions]
Do you blog about NetBeans ? Add your blog to PlanetNetBeans.
Feed Subscriptions
NetBeans Zone - The social network for developers (feed)
ludo's blog (feed)
pandaconstantin's blog (feed)
APIDesign - Blogs (feed)
hansmuller's blog (feed)
pkeegan's blog (feed)
richunger's blog (feed)
tball's blog (feed)
timboudreau's blog (feed)
David R. Heffelfinger (feed)
Carsten Zerbst's Weblog (feed)
Winston Prakash's Weblog (feed)
Need to find a title (feed)
Roger Searjeant's blog (feed)
Optonline Webmail (feed)
Michael's blog » NetBeans (feed)
ProNetBeans (feed)
Tim Boudreau (feed)
Paulo Canedo » NetBeans English (feed)
Bistro! 2.0 (feed)
Anchialas' Java Blog (feed)
markiewb's blog (feed)
Anuradha (feed)
Netbeans6/6.5 my best practices (feed)
Java Evangelist John Yeary (feed)
Java, business and... NetBeans ! [[ Jonathan Lermitage ]] - NetBeans IDE (feed)
Neil's Dev Stuff (feed)
Category: NetBeans | Software and Science (feed)
Computer says null; (feed)
NetBeans Adventures, Java and more (feed)
Inspiration and Expression » Netbeans (feed)
John O'Conner » NetBeans (feed)
Koberoi Oracle (feed)
Adam Bien (feed)
Ignacio Sánchez Ginés » NetBeans (feed)
Bernhard's Weblog (feed)
Michel Graciano's Weblog (feed)
Ozone and Programming » netbeans (feed)
NetBeans Ruminations » NetBeans (feed)
Tiplite » netbeans (feed)
Arun Gupta, Miles to go ... (feed)
Geertjan's Blog (feed)
.JARa's Bilingual Weblog (feed)
JavaFX Composer (feed)
The Java Jungle (feed)
Jesse Glick (feed)
Martin Grebac (feed)
The NetBeans Community Podcast (feed)
NetBeans Profiler (feed)
NetBeans for PHP (feed)
NetBeans Web Client (feed)
Rechtacek's (feed)
Virtual Steve (feed)
My First Blog - Satyajit Tripathi (feed)
The Aquarium (feed)
Tinuola Awopetu (feed)
Insert Witty Irony Here (feed)
Gualtiero Testa » Netbeans (feed)
James Selvakumar's Blog » netbeans (feed)
nB gUru » NetBeans (feed)
Newsintegrator Blog » netbeans (feed)
Praxis LIVE » NetBeans (feed)
TechAshram » NetBeans (feed)
There's no place like 127.0.0.1 » Netbeans (feed)
mkleint (feed)
NetBeans Community Docs Blog (feed)
The Netbeans Experience (feed)
NbPython/ jpydbg / pymvs (feed)
Shanbag's Blog (ರಜತ ಲೋಕ) (feed)
Wade Chandler's Programming Blog (feed)
Devlin's Lab (feed)
Ramon.Ramos (feed)
Big Al's Blog (feed)
Code Snakes (feed)
In perfect (spherical) shape (feed)
Van Couvering Is Not a Verb (feed)
Diego Torres Milano's blog (feed)
Vroom Framework (feed)
Messages from mrhaki (feed)
Jeff's Blog (feed)
Oliver Wahlen's Blog (feed)
Shuttle between Galaxies (feed)
Welcome to my live... (feed)
Netbeans IDE Blog by Tushar Joshi, Nagpur (feed)
Devel Blog (feed)
diamond-powder (feed)
Manikantan's Netbeans (feed)
Antonio's blog (feed)
Where's my Blog?!

Powered by:    Planet

Last updated:
April 28, 2015 02:07 PM
All times are UTC

Sponsored by
sponsored by Oracle

visit NetBeans website
NetBeans Zone - The social network for developers - April 28, 2015 09:19 AM
Lessons Learned from the Development of the easyUML NetBeans Plugin at the University of Belgrade

The Open Source Software Development Center at the University of Belgrade has released a new version of a UML plugin for NetBeans, called "easyUML". The main motivation for development of this plugin was to create an easy to use UML tool primarily for teaching software design, but which is also a handy tool for developers in general. In practice, that means the focus is on the most commonly used...

Adam Bien - April 28, 2015 03:54 AM
A Java EE Startup: Filtering Information with zeef.com

Arjan, could you please briefly introduce yourself? How did you started with Java SE/EE?

I've been working with computers and programming for a long time. Started on the commodore 64 when I was but a small kid and engaged with programming almost right away. I studied computer science at the University of Leiden, where I specialized in high performance computing.

I "started" with Java around 1997. I think my very first contact with Java was when helping out my sister who studied math at the Free University of Amsterdam. They used Java there. I was more of a C++ programmer at the time, but the syntax was close enough to be able to help.

After that I got curious about this new Java thing and started to look more and more into it. My jobs however were still mostly C++. I did a few applets for my homepage at the university, ported a few games that I made for myself from C++ to Java, and I had one job where I coded a small desktop application using Java, but that was about it.

It wasn't until 2003 that I really deep-dived into Java and started to use it daily at m4n.nl, which was a startup too back then using Java EE. 

Currently I'm a member of both the JSF EG as well as the Security EG.

What is the idea / business case behind zeef.com?

Zeef.com effectively tries to filter the world's information by adding a human element to search. A search engine like Google is of course unparalleled when you're searching for a very specific thing, like say a specific exception. But search engines don't actually say much or anything about the quality of links. Does a certain result appear at the first position of a search result because it's the best one, or just because it had the best SEO applied to it?

This is where zeef comes in. People who are knowledgeable about a certain field and are recognized by their community collect and rank all the best links for a certain subject. For example, Bauke Scholtz (BalusC) is a well known JSF expert and his zeef page at jsf.zeef.com/bauke.scholtz contains all the links for JSF that he thinks are the best ones, organized in blocks.

A distinguishing feature is that you can take those blocks and share them on the web, e.g. put them on your blog or in the side bar of your site. If you re-order the links in that block on your zeef page, these changes will be reflected wherever you shared that block.

A key element is that on zeef no one can exclusively claim a subject. If someone else thinks they can make a better page, or just a page that approaches the same subject from a different angle, they can do that.

What is the zeef.com architecture?

At the highest level we primarily have a server for the website itself, one that runs (overnight) jobs, one for our API, three servers that serve out the widgets and one for the database (PostGreSQL). Static resources, such as images and custom CSS are cached by the Apache frontend servers that proxy these via a separate cookieless domain (zeef.io). These servers are loosely clustered via an Infinispan cluster, which however doesn't send actual data through the cluster but only (async) invalidation messages.

For the implementation we use Java SE 8 and Java EE 7. The application server is WildFly 8.2, which we self-build and patch when needed. We always deploy one application (one archive) to one AS instance. Building a new AS and deploying it to a server is approximately the same process as building the application archive and deploying it.

The application archive we use is the EAR. We contemplated using the simpler WAR format when we started, but a rudimentary layering between business code in the EJB module and web code in the web module, as well as a straightforward conf/ directory in the root of the EAR swayed us to the EAR format.

The frontend is build using JSF, with CDI backing beans and Bean Validation constraints. Where Bean Validation constraints are not convenient we use native JSF validators. 

CDI backing beans are kept as lean as possible and we avoid usage of JSF specific collection types there in favor of standard Java SE collections. Those slim backing beans only collect input from the page and delegate to services which contain the actual business logic. Services are implemented as stateless EJB beans, which makes transactional concerns a breeze. We don't use interfaces for services, nor do we have separate DAOs. EJB beans are injected with JPA entity managers, which handle persistence. JPA entities are kept as slim as possible as well, just data + getters/setters and Bean Validation constraints.

JPA entity managers get their data from an (XA) data source, which we have configured inside the application using the standardized Java EE data-source element in application.xml. Switching between stages is then done using a data source wrapper that reads connection details for the configured stage (which is provided via a -D startup parameter) from the EAR's /conf directory. This switching of data sources and the conf/ directory itself is something we had to hack together though and is something we very much missed in Java EE.

Security of the website is handled via JASPIC and the native security mechanisms of Servlet and EJB. As zeef.com is a standalone application that does not need to integrate with internal enterprise infrastructure it handles its own security. We have two authentication mechanisms, the first is a variant of Servlet FORM, but better suitable for usage with JSF (allows JSF to validate the username/password and provide feedback before authentication is attempted) and one that uses OAuth for authentication (technically, authorization) via providers such as Google and Facebook. Those mechanisms delegate to an identity store, which is implemented as a CDI bean that uses an EJB service and JPA for the actual credential processing and fetching of user details.

The overnight jobs are handled by fairly simple EJB timers. They do things like validating links and precalculation of some of the statistics that you see on the subject pages. Since these jobs run on a separate server it's particularly important that it participates in the same Infinispan cluster that the website is also using.

ZEEF also features a RESTful API, which is implemented by JAX-RS and also runs on a separate server. Here too security is based on JASPIC, but uses a different authentication mechanism; a stateless header based token one. Stateless here means that the result of authentication is not stored in a session per user and not even in a cookie. The client is simply re-authenticated with each request. To keep this reasonably fast an authentication cache is used, which unlike a session can be purged at any time without the client really noticing anything but a small delay when it does the next request. 

The JAX-RS resources are mostly very lean and delegate to the same EJB services that the JSF backing beans are also using. Those EJB beans however are not clustered or remote; each application instance uses its own local instances.

How many developers are working on zeef.com?

We have 3 core developers; Bauke Scholtz, Jan Beernink and myself. Additionally our scrum master and system administrator also do programming and are technically part of the developer team as well, but they obviously don't have an IDE open full time.

Is Java EE productive?

Absolutely! We all know J2EE 1.4 had a name of being heavyweight and unproductive, with its focus on the over-complicated EJB 2 model and at times unintelligible vendor specific configuration for security and data sources, which wasn't just unintelligibly but had a tendency of changing between every release of an implementation. And let's not forget the slow start up times.

Java EE 7 however is for the most part immensely productive. JBoss itself without anything deployed starts up in about a second on our workstations and with the zeef website deployed it's roughly 15 seconds. CDI + EJB are now extremely simple classes with often just a single annotation that gets a lot done. And modern JSF (2.0 and beyond) allows for a programming style that can be very close to the web, but still offers you higher level abstractions when needed.

However, security is a nightmare out of the box. Historically the idea was that you set it up outside of your application at the application server level with vendor specific tools. While this is great for application independent security that covers many different applications, it's a cumbersome and poor fit for our use case. Our saving grace was this small little gem called JASPIC. Without it we wouldn't have been able to stay with Java EE for security. But JASPIC itself is just a low-level hook into the container, so we had to build a lot of higher level functionality on top of it. These struggles are what motivated me to join the Java EE 8 security EG. Hopefully we can make the experience better.

Another thing is that the @Asynchronous annotation lets you do one or more actions concurrently with a minimal amount of effort in a container safe way. This is by itself very productive, but it's unfortunate that there's no support for choosing a specific thread pool. Java EE does have a spec that deals with this (Java EE Concurrency utils), but additional thread pools have to be defined outside the application and they don't work in conjunction with @Asynchronous. 

[Arjan, you should test https://github.com/AdamBien/porcupine/. I'm already curious about your opinion]

Do you have any external dependencies in your WAR? If yes, which purpose do they serve?

We have a couple of external dependencies, not only in the WAR but in the EAR as well.

In the war we use OmniFaces, PrimeFaces and PrettyTime.

OmniFaces is our own library that makes working with JSF a lot easier. It's not a visual component library, but it contains a lot of utilities and API enhancements that could have been in the JSF core as well. In fact, part of our job at the JSF EG is looking at which parts of OmniFaces make sense to be transferred to JSF itself.

PrimeFaces is another essential library when working with JSF. PrimeFaces is in a way what gives JSF the attraction that it has; a great set of beautiful visual components with which you can easily assemble your UI. It must be said though that PrimeFaces couldn't really do what it does if it wasn't for the foundation that JSF provides.

Then we use PegDown for the processing and rendering of Markdown that users can use in our text blocks. JSoup for parsing HTML, ROME for RSS/Atom parsing which is needed for the so-called feed blocks that we display, Image4J, Imgscalr and Batik for handling the images on our site, the Google API client library for interaction with Google analytics and a few other things, Infinispan for explicit caching of various things that are not JPA entities and finally Hibernate Search for powering the site's search functionality.

What about the performance, is Java EE fast enough?

Java EE is incredible fast. The website itself is now doing over 120k views a month and as mentioned above is running on a single server basically, which is not even that powerful.

You occasionally hear that JSF is supposedly not suited for public web sites, since it would be slow and using a lot of memory. We found however that this is absolutely not the case. Leonardo Uribe did some interesting performance benchmarks (see http://www.jsfcentral.com/articles/understanding_jsf_performance_3.html), and JSF came out as one of the fastest that also puts less strain on the GC than some of the other frameworks. Various other benchmarks like the World Wide Wait one came pretty much to the same conclusion. We did some testing of our own as well, and for a very basic page JSF can easily handle 5500 requests/second on a single server (see http://jdevelopment.nl/wildfly-8-benchmarked). In reality you'd not send so many request to one box and more complicated pages with database queries etc will reduce that number of course, but it does give a base line of performance.

The memory issue, specifically the session usage per user, is another source of confusion. Before JSF 2.0 this was indeed enormous, but ever since JSF 2.0 and its partial state saving, the actual amount of state saved is really low. JSF tracks the state and only stores changes instead of everything. Where in extreme cases JSF 1.x would use maybe a megabyte per user, JSF 2.x reduces this to something that's between a few bytes and a few KB.

As far as the UI is concerned, we had some challenges were it concerned the client-side JavaScript. Calling the wrong method there at times could easily introduce large delays in page rendering, sometimes up to a second or more. Changing this to an almost similar method would e.g. prevent a massive amount of events to be fired. Java EE and JSF could also help to speed up things here by making use of things like the OmniFaces' o:deferredScript and combined resource handler.

As in most web applications the database plays an important role in the performance of the site. In case of Java EE there are some concerns when using JPA. 

In an ideal object model, an entity often has references to all other entities it's logically associated with. If the object graph that is formed this way is of non-trivial size an ORM can induce a perform issue if one is not careful. Setting all relations to eager loading means you'll fetch almost the entire DB for every little operation which will destroy your performance, but setting everything to lazy will either give you exceptions all the time because data is not loaded, or will cause many additional small queries to be fired, which also destroys performance. 

The key, as in plain SQL as well, is to fetch just the right amount of data. JPA has some mechanisms to help with this, like fetch graphs, but these are still not optimal. You can for instance specify per query what you want, but you can't say what you DO NOT want (see https://java.net/jira/browse/JPA_SPEC-96). In practice we also found that the interaction between fetch graphs and caching can be weird or sometimes even downright broken. If an entity was cached without fetching relation X, then when using a fetch graph that says X should be loaded, you still get the entity without X.

So our strategy has been to reduce the number of relations between entities to what is strictly necessary, and occasionally to use JPA DTOs when a subset of data is needed for a rather complex entity. Such DTOs are populated using the constructor selector syntax in JPQL queries and JPA is generally smart enough to generate far more optimal queries then. A limitation is that these are limited to single-valued path expressions (e.g. no collections, see https://java.net/jira/browse/JPA_SPEC-69).

Another strategy is to fire a number of queries in parallel. Using the aforementioned @Asynchronous this is rather trivial to do from a backing bean. The returned Futures are then stored and only resolved when a backing bean's property is actually used on the page. Besides doing DB work in parallel, this can give a small performance boost since the DB operation and initial rendering of a page (up till the location where the value is actually needed) can overlap.

What is your favorite IDE?

With some reservations I'd say Eclipse in combination with JBoss tools. I've been using this for a long time, some 12 years now I think.

I do dislike the fact that Eclipse doesn't really seem to be focused anymore on delivering an IDE, but from the outside seem to be more busy with being a platform for anything and an organization for everything. I'd wish they'd just be an IDE and nothing else, and focus on polishing the IDE experience above all.

Would you choose Java EE again?

100% yes!

Do you have any secret ideas for new Java EE startup?

Despite not being that old yet, zeef.com has reached a level where we feel a lot of the functionality is there. We therefor are somewhat starting to think about our next step. Ideas are always welcome, so I'd like to return the question by saying that if anyone has a great idea they can always contact us. No promises though ;)

Arjan, thank you for the interview!

I just "zeefed" Java and found this: https://java.zeef.com/jan.beernink. Enjoy zeefing!
Real World Java EE Workshops [Airport Munich]>

Geertjan's Blog - April 27, 2015 11:05 AM
Less Noisy NetBeans

Especially when you've tuned NetBeans to make it dark, it's helpful to be able to remove as much noise as possible. Spend less than 3 minutes learning how to do this!

Geertjan's Blog - April 26, 2015 07:01 PM
YouTube: How to Setup and Use Minecraft Forge

Quite impressed by Minecraft Forge, as well as how well it integrates via the Gradle plugin into NetBeans IDE:

Geertjan's Blog - April 25, 2015 10:26 AM
Seamless Minecraft Forge in NetBeans

Minecraft Forge is a common open source API focused on allowing mods to be created without the need for the source code of Minecraft to be edited. 

Happy to report that Minecraft Forge works seamlessly in NetBeans IDE. Take the following steps:

  1. Download and unzip Forge 1.8 from http://files.minecraftforge.net/maven/net/minecraftforge/forge/1.8-11.14.1.1341/forge-1.8-11.14.1.1341-src.zip

  2. In the folder where you unzipped the above, run "gradlew setupDecompWorkspace --refresh-dependencies".

  3. Start NetBeans IDE (I am using NetBeans IDE 8.0.2). Go to Tools | Plugins and install "Gradle Support".

  4. Go to File | Open Project. Browse to the folder where you unzipped the above, which will now be recognized as a Gradle project. Open the project. Wait a moment for the Gradle plugin in NetBeans IDE to figure out the structure of the Gradle project you have opened.

  5. Right-click the Gradle project and go to Tasks | run | runClient. After a moment, Minecraft starts up!

Illustrative screenshot, click to enlarge it:

Next, you'll want to map the "runClient" task to the "Run Project" command in NetBeans IDE, so that running your mods is as simple as pressing F6. Right-click the project and choose Properties. The Project Properties dialog opens:

Click "Manage Built-In Tasks" above. Now look for "Run" and then type "runClient" in the Tasks field, as shown below:

Click OK. Press F6 (which is mapped by default to "Run Project") and the "runClient" task will be run! 

Congratulations to Attila Kelemen from Hungary, for making such a nice NetBeans plugin for Gradle. 

Now mod away

Geertjan's Blog - April 24, 2015 09:00 AM
Nashorn from the Perspective of the Java EE Developer

What is it that's interesting about Nashorn, which is now built into Java 8, for a Java EE developer?

Adam Bien's response:

First, Nashorn is just JavaScript in Java 8. A very fast one and very well integrated with Java. For a Java EE developer, the first interesting thing is automation. For instance, yesterday I had to find some problems in my log files, so I built a quick parser with Nashorn and Java 8, and it was a very pragmatic solution, it took me 20 minutes, and it was ready to go. Then, you know, deployment, starting servers. You can use Nashorn as a system scripting language, which is very very convenient. This is the most obvious and, I would say, least intrusive usage of Nashorn. Then, of course, you can embed Nashorn into your application. What you gain from that—flexible checks, validation rules, algorithms. It is easier to use Nashorn than to write your own parsers, for instance. And what you can also do, of course, is use Nashorn to start Java. One example would be—I created an integration solution where you can very easily map, via JavaScript, input to output, and be able to read a database and output it to Excel, without recompiling the solution, for instance. Wherever you need flexibility and you don't want to redeploy the application, Nashorn might be the right answer.

From a recent interview by Coman Hamilton (from JAX) with Adam Bien, here on YouTube

Adam Bien - April 24, 2015 06:01 AM
Java FX Will Outlive Most Of The JavaScript / CSS Frameworks

Java FX or HTML 5? at jax.de I was interviewed about this topic:

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting


Real World Java EE Workshops [Airport Munich]>

Geertjan's Blog - April 23, 2015 07:50 PM
Porting Knockout.js Examples to DukeScript

I hold this truth to be self-evident—a technology without samples is doomed to failure.

Better still is to have examples that relate to something that your target audience is already familiar with.

In the case of the Knockout.js community, these are the samples that everyone knows:

http://knockoutjs.com/examples

And... here are the DukeScript equivalents, in progress, most are already there, while others are still being worked on:

https://github.com/GeertjanWielenga/DukeScriptSamples.git

Feel free to clone them, change them, enhance them, and use them as the basis of your own applications. Notice, in particular, that all the coding you'll do is in Java and not in JavaScript! 

NetBeans Zone - The social network for developers - April 23, 2015 09:26 AM
Minecraft Powered by Mozilla & NetBeans – Code Literacy Teaching Kit by EPIK

Preview Text:  There are many free IDE’s out there but not all are as robust as each other and NetBeans together with its active open source community, whom like the Linux community, is both willing to support the youth learner’s journey and engage, is the IDE we finally settled on. Legacy Sponsored:  ...

Geertjan's Blog - April 22, 2015 01:56 PM
New Spring Boot Integration for NetBeans IDE

Aggelos Karalias, one of the attendees at NetBeans Day Greece, has made a brilliant plugin for NetBeans IDE that provides code completion for Spring Boot configuration properties, click to enlarge the screenshot below:

Congrats, Aggelos! (And great to have met you in Greece!) As you can see above, it works perfectly.

I checked out the sources here, built, and installed them:

https://github.com/keevosh/nb-springboot-configuration-support

And then I used this project by Michael Simons, to make the screenshot above:

https://github.com/michael-simons/biking2

Also, this article is useful about Spring Boot and NetBeans, as well as other technologies, such as AngularJS:

http://info.michael-simons.eu/2014/02/20/developing-a-web-application-with-spring-boot-angularjs-and-java-8

Adam Bien - April 22, 2015 12:44 PM
Upcoming Java EE / Java / Testing / HTML 5 / Persistence Workshops Talks and Events


Real World Java EE Workshops [Airport Munich]>

NetBeans Zone - The social network for developers - April 22, 2015 11:33 AM
Nebrass Lamouchi: My Five Favorite NetBeans IDE Features!

Continuing a series of articles focusing on NetBeans users and their five favorite NetBeans IDE features, here's the next part, by Nebrass Lamouchi. -- NetBeans team. Preview Text:  Read about Maven, Java EE, HTML5, JavaScript, Java 8, and the Java debugger... all for free in NetBeans IDE! Legacy Sponsored:  ...

APIDesign - Blogs - April 22, 2015 07:00 AM
JavaScript is the x86 of the Web

Brendan Eich, the inventor of JavaScript: I said 'JS is the x86 of the web' ... the point is JS is about as low as we can go..., here is a video to document the current JavaScript situation together with showing excellent demos as a proof:

--JaroslavTulach 07:00, 22 April 2015 (UTC)

Geertjan's Blog - April 21, 2015 02:18 PM
Mapping Knockout.js Concepts to Java

Here's a table that should help you when expressing your JavaScript-based Knockout.js applications in Java via DukeScript.

Knockout.js DukeScript Example
Observable property @Property
@Property(name = "itemToAdd", type = String.class)
Observable array property @Property with 'array' attribute
@Property(name = "items", type = String.class, array = true)
Computed property @ComputedProperty
@ComputedProperty
static String fullName(String firstName, String lastName) {
    return firstName + " " + lastName;
}
Function @Function
@Function
static void addItem(Data model) {
    String itemToAdd = model.getItemToAdd();
    List items = model.getItems();
    if (itemToAdd!=null&&itemToAdd.length()>0){
        items.add(itemToAdd);
        model.setItemToAdd("");
    }
}

Want to see the above in action? Watch this new screencast created today:

Geertjan's Blog - April 20, 2015 10:06 AM
Hello, Knockout.js Users Everywhere!

Are you interested in increasing the scope of adoption of Knockout.js? If so, you should be interested in the screencast below, which shows you how the Java community can use Knockout.js, without needing to code in JavaScript. After all, the Java community can benefit a lot from the two-way databindings provided by Knockout.js but is prevented from doing so by needing to switch to a different language for coding in Knockout.js. At the same time, there may also be a segment of the Knockout.js community that in retrospect prefers Java over JavaScript and might by means of the below remain within the Knockout.js community thanks to the possibility of using Java.

Either way, enabling your technology to be exposed to the Java community is surely a big win! 

In short, watch this new screencast, created today!

Adam Bien - April 20, 2015 03:57 AM
Java EE 7 on Java 8 Devcrowd.pl Conference Session Video

Playing with Java EE 7 (async JAX-RS, Concurrency Utilities, CDI, EJBs and porcupine) and Java 8 (method handles) at the 2015.devcrowd.pl conference at 19.04.2015:

The sample app and slides are available for download.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting


Real World Java EE Workshops [Airport Munich]>

Geertjan's Blog - April 19, 2015 05:00 PM
YouTube: NetBeans Days Greece (in 3 Minutes)

The first of many more NetBeans Days in Greece came to an end yesterday... and here's a 3 minute impression of the event, with many thanks to Mark Stephens from IDR Solutions (with a trip report here) for recording the interviews:

Thanks to John Kostaras from JCrete for organizing and also speaking, as well as Emmanuel Hugonnet from Red Hat, Mark Stephens from IDR Solutions, Vasilis Souvatzis with his first ever presentation at a conference, and Jaroslav Tulach, founder and initial architect of NetBeans. 

Also a BIG shout out to the Anderson Software Group for sponsoring the event. Thanks Paul and Gail, we promoted your organization and books and everyone applauded on hearing of your support for this event!

Geertjan's Blog - April 18, 2015 07:00 AM
Contact List in DukeScript

Here's a small Contact List app, created in DukeScript, with a bit of help from Jaroslav Tulach. It is shown below running in the browser on my desktop, as well as in the JavaFX WebView:

Here's the sources, unzip them, you'll have Maven projects to work with. 

I don't have Android setup and no Mac OSX available, so I didn't include the related Maven projects for those devices. 

Soon I will blog about the code used in this example and make a screencast about it. 

Geertjan's Blog - April 17, 2015 08:52 PM
Java in the Trenches

Java has been driven into the trenches, some years ago already. (Slightly under hundred years after the photo on the left was taken, in 1914.)

More or less the general consensus appears to be that the frontend battle has been won by JavaScript.

So, what's the role for Java in this brave new world? More or less the general consensus appears to be that Java has great value on the backend. The Java EE Platform is awesome in that it consists of specifications agreed upon across the industry, whereas the JavaScript ecosystem is crazy mad cowboy land.

However, what happens when those frontend developers, who have, without any resistance, moved to JavaScript, discover the value of Node.js over the value of the Java EE Platform? What happens when they see the value of doing the frontend and the backend in the same language, i.e., JavaScript? What happens when they rate that value higher than the value of the industry-based specification-approach promised by the Java EE Platform? When the value of an agreed upon industry-wide platform, i.e., the Java EE Platform, weighs less than the value of having a common programming model right across the application, from its front to its back... then what happens? Java will have no place in the browser and will be pushed back further still, into the purely scientific world, focused narrowly on simulation software, relevant to back-office banking and defense force software, that is, desktop solutions and console solutions, only, where the NetBeans Platform is the purest Java solution, in terms of application framework. It will then be competing with Cobol and AS/400 RPG and their various other crusty friends. 

It's hard, but let's be honest. 

What is to be done? Instead of giving up on the frontend and retreating to the backend, from which a further retreat will inevitably follow, into obscurity, the frontend should be defended, simply because the Java ecosystem is so much better than the JavaScript ecosystem, as Java developers know, by Java developers. How? By means of DukeScript.

Geertjan's Blog - April 16, 2015 07:00 AM
Best NetBeans IDE Tweet, Ever!

https://twitter.com/jeqo89/status/588315745458593792

The point here is the NetBeans is not only an IDE, with the 'heaviness' that the term tends to imply. It is also a text editor, a direct competitor to tools like Sublime, once you discover the Favorites window that enables you to work with individual files, instead of projects:

https://www.moreofless.co.uk/netbeans-text-editor-not-java/

Geertjan's Blog - April 15, 2015 09:13 AM
YouTube: WADL-Driven REST Client Generation

Did you know you can (1) let Jersey generate a WADL file and (2) let NetBeans generate REST client stubs from the WADL file? No? Well, watch this screencast to see it all in action:

NetBeans Zone - The social network for developers - April 14, 2015 05:15 PM
NetBeans at Java Day Tokyo 2015

Recently, Java Day Tokyo 2015 was held, which included a successful NetBeans event. Around 100 attendees came to the NetBeans event, with about 50% being familiar with NetBeans IDE and 20% using it for their day-to-day development.  Preview Text:  Read a report by Masaki Katakai in Tokyo on the recently held NetBeans Day in Tokyo! ...

Geertjan's Blog - April 14, 2015 04:46 PM
YouTube: Defect Driven Design!

Every now and then, this very specific YouTube clip needs to be republished to the world, simply because it is so awesome!

NetBeans Zone - The social network for developers - April 14, 2015 12:18 PM
Agenda: NetBeans Days Greece

NetBeans Days in Greece, to be held on Friday and Saturday, 17 and 18 April, will be a great event in the history of the NetBeans community. The agenda has been finalized (although it can/will change based on what participants want to do/hear during the event) and is as follows: Friday, April 17 Preview Text:  The agenda for NetBeans Day Greece,...

NetBeans Zone - The social network for developers - April 14, 2015 07:10 AM
j-lawyer.org: Our Five Favorite NetBeans IDE Features!

Continuing a series of articles focusing on NetBeans users and their five favorite NetBeans IDE features, here's the next part, by Jens Kutschke and the development team at j-lawyer.org in Germany. -- NetBeans team. Preview Text:  NetBeans feels more like "all of one piece" supporting a typical development process, instead of having...

Geertjan's Blog - April 13, 2015 12:32 PM
Free: Inject Extra Power into the Browser!

Are you getting everything you can out of your browser? Sure, the browser can do so much more with new and richer content than a few years ago. However, did you know you can connect it to your development environment?

Install the free NetBeans Connector plugin into the Chrome browser and you're good to go:

Once you've installed the above, what can you do with it?

Quite a lot! Here are some small examples:

So, go here, and inject new power into the browser, for free, today!

Geertjan's Blog - April 10, 2015 07:00 AM
NetBeans Platform Certified Training at Fontys University of Applied Sciences

Yet another NetBeans Platform Certified Training was held recently. At Fontys University of Applied Sciences in Venlo, a group of students is working on a logistics simulation software called LIMO, which stands for "Logistics Impact Model":

http://limo.fontysvenlo.org

The purpose of the project, created together with and for TNO, is to graphically visualize logistics chains, simulate costs, and generate advice on how to reduce or eliminate expenses.

The source code is on GitHub:

https://github.com/LogisticsImpactModel

Here's the group:

In two days, all the major NetBeans Platform topics were covered, many hands-on workshops were done, and by the end, after a lot of interaction and discussion, the group was able to plan several new features for the project. For example, a NetBeans-based Project System will be added and undo/redo functionality will be integrated into the Visual Library Scene. A prototype of the new features, as well as the existing Scene with its simulation capabilities is shown below: 

Are you also creating client-side applications and would you like to be able to immediately focus on the domain/business logic, rather than all the infrastructure and plumbing that desktop applications require? For domain-driven desktop programming, the NetBeans Platform is a perfect solution. Either get the awesome book "NetBeans Platform for Beginners" or the equally awesome JavaFX-oriented book "JavaFX Rich Client Programming on the NetBeans Platform". Or get both. And take a NetBeans Platform Certified Training, to quickly put all the pieces together, 100% free if you're a group of developers at an educational institution.

NetBeans Zone - The social network for developers - April 10, 2015 06:52 AM
Mirko Rener: My Five Favorite NetBeans IDE Features!

Continuing a series of articles focusing on NetBeans users and their five favorite NetBeans IDE features, here's the next part, by Mirko Rener. -- NetBeans team. Preview Text:  What do you like most about NetBeans IDE? In this article, Mirko Rener talks about multi-language support, the NetBeans community, and much more! ...

markiewb's blog - April 09, 2015 07:31 PM
Github issues and Color Preview plugins

Today I like to blog about some new plugins from another very productive plugin author. All of them were created by junichi11, who created more than 15 plugins, which all are freely available at the NetBeans plugin portal. Many of them are PHP-related, so if you are a PHP developer you are certainly using one of his plugins already.

a) Github issues plugin

https://github.com/junichi11/netbeans-github-issues-plugin

This plugin integrates issues from your github repositories into the tasks view of NetBeans. From within NB you can view, edit and create issues. And much more…

2015-04-09_21h02_07

BTW if you are using Backlog for tracking your issues, then you can also use https://github.com/junichi11/netbeans-backlog-plugin

b) Color preview plugin

https://github.com/junichi11/netbeans-color-codes-preview

This plugin shows color for hexadecimal encoded colors (f.e. #FF0045) in the left sidebar of the editor. This feature is not new to IDEs, but it is now finally available for NetBeans. Enable this feature via “View->Show Colors” and the colors in CSS files will be visualized. It is configurable and thus not limited to CSS.

2015-04-09_21h08_26

The plugins are signed and this way they can be installed directly from your IDE (Tools->Plugins->Available Plugins). You can also download them from their github pages or from http://plugins.netbeans.org and install them manually

Do not hesitate to post feedback or file issues at the respective github pages of the plugins. junichi11 is a friendly one and very responsive! Thank you for the good work junichi11!


Geertjan's Blog - April 09, 2015 08:59 AM
Sample REST Application

For some time in NetBeans IDE, there's been this example available in the New Project dialog:

The template above creates a new NetBeans Platform application that consumes services from the "Message Board" application that is available in the "Web Services" category in the New Project dialog.

I looked at the code of the "Sample REST Application" and, since it had been written some years ago, a lot of XML files are included, instead of annotations on TopComponents. And there are other problems in the example, too. Rather than updating it within the NetBeans sources, I think it's better to have the code available separately, so it can be worked on and extended further by anyone out there. So, here it is:

github.com/GeertjanWielenga/SampleRESTApplication

Here's the structure of the sample REST application, together with the Java EE application that provides the services:

Notice that the NetBeans Platform application uses Maven as its build system.

When both applications are deployed, you see the following, click to enlarge the image:

Related issue: https://netbeans.org/bugzilla/show_bug.cgi?id=251791