A new report by Typesafe indicates two thirds of developers plan on adopting Java 8 within the next year, with most of them aiming to adopt within 6 months.
New versions of Java have always been slow to gain adoption among both developers and to a larger extent, the public. This has often led to frustrations with regards to deploying projects on outdated versions of java. Every few versions of Java always seems to have such great features that people can’t resist fast tracking their upgrade path. The last time such features were introduced was probably Java 5 with generics and to a lesser degree annotations.
One such feature of Java 8 is lambda expressions which provide more than just syntactic sugar for closures. It provides somewhat automatic support for concurrent execution which in the days of Moore’s Law reaching its limits will be a boon for developers looking to multi-threaded programming for performance improvements.
While developer adoption of Java 8 will lead to more Java 8 deployments at the server level, one can also hope that this adoption might also leak out among the general public. Java 8 also has a rebooting of JavaFX and more installations out there might make Java FX more attractive on the desktop if more people are likely to be running a java installation that supports it.
Either way, its exciting times ahead for Java!
I noticed this little nugget in the Google Analytics FAQ :
Due to user privacy concerns, Google Analytics doesn’t report on personally identifiable information, including a visitor’s IP address.
Is this the same Google that will take a picture of you in your own home from 20 feet away, post it online, and tell you if you don’t want to be photographed in a certain manner you shouldn’t be doing it visibly in “public” ? This is in spite of the fact that I already have access to the IP addresses that visit the site.
Of course the real kicker is that they say they don’t report on such information, it doesn’t say they don’t capture it and use it for their own nefarious ends.
It looks like JBoss 6.0 milestone 5 has just been released. Not that anyone would know it since they haven’t announced it anywhere, I just saw Aslak Knutsen tweet it. Dan Allen also posted slides from his JavaOne presentation on Weld and the future of Seam.
The previous version of the Knappsack Maven Archetypes included archetypes for creating projects using JSF, JPA, CDI and Bean Validation that can run in a servlet container such as Jetty or Tomcat. In order to put it through its paces I decided to create a little test social bookmarking application that lets users create accounts, and when logged in, add bookmarks and tag them. Users that are not logged in can view the bookmarks and filter them by user or tag, and the results are paginated.
The latest version of the Knappsack Maven Archetypes now supports creating Java EE 6 applications for servlet containers. These projects includes configuration for core Java EE 6 technologies such as JSF, CDI, JPA and Bean Validation and can be run from the command line using the embedded Jetty and Tomcat servlet containers.
Also with this latest release, all the archetypes are available in the Central Maven Repository which means you can dive straight in and create a new Maven project using these archetypes :
I have finally got around to putting the Mavan Java EE 6 Archetypes into the Maven Central Repository. This means you no longer have to manually download and install the Archetypes, they should be available for you to use out of the box. In some cases, depending on how you are creating your projects, you may need to refresh or update your Repository indexes in the IDE before they are visible.
In Eclipse (with m2Eclipse installed), you open the Maven Repositories view, locate the Central Repository in the global repositories, and right click and select update index to make the archetypes available.
To create a new project from the command line, you can copy the following command into a script or batch file and edit it to setup your own group and archetype values.
mvn archetype:generate -DarchetypeGroupId=org.fluttercode.knappsack -DarchetypeArtifactId=jee6-sandbox-demo-archetype -DinteractiveMode=false -DarchetypeVersion=1.0.4 -DgroupId=org.application -DartifactId=sandboxdemo -Dpackage=org.application
The new version includes the archetypes for creating Java EE 6 applications in servlet containers which lets you play around with CDI, JSF, JPA, validation and other JEE 6 technologies using an embedded servlet container from the command line.
I’ve just released a new project called Knappsack which is a set of Maven archetypes for Java EE 6. In addition to the usual starter projects, these archetypes provide complete example applications so you can see the features of JEE 6 and play around with it without having to butcher existing demo applications.
I’ve been fairly quiet over the last couple of months as I’ve been working on a few items, working on a new site and working on getting two new Open Source projects final and out the door.
The new site will be home to most of my tutorials, articles and other writings, as well as possibly some screencasts and even podcasts. It will in essence be a pure java development site. This blog will go a bit quieter and contain less development stuff, although most opinion will get put out here instead of over there. I’ll also be copying some of my tutorials over there from this blog.
I’m aiming to create a fairly cohesive tutorial site, aided in part by the Maven Archetypes which will give me a firm base onto which I can build tutorials without having to start from scratch, but one archetype is a sandbox Java EE 6 app with project configuration, a demo model and some test data. The sandbox app will let developers create a new skeleton java EE 6 application they can play with. Building on that, there is a sandbox-demo application which as an archetype that creates a full working demo CRUD application using Java EE 6 so developers can see how all the different pieces of Java EE 6 go together. It includes features such as conversations, JPA CRUD, page parameters, CDI injection and events.
Again, I have to say it, but Open Source is Hard. In the past couple of months, I have been working on a whole new site, getting 2 projects ready to roll with documentation and site content to boot as well as working a job, and having some kind of life.
Now it’s out, I can start to focus a little more on getting some more Java EE 6 tutorials and articles out.
It’s been a while since I’ve posted anything new as I’ve been busy with a new Open Source software project called Spigot. It’s a java library that sits between your application code and your data sources (Hibernate, JPA, JDBC or any arbitrary source of data) and helps with things like pagination and sorting using a common interface so you can switch out data providers and use alternatives.
For query language data providers, Spigot also facilitates excluding restrictions from WHERE clauses when parameters are resolved to null. Parameters are handled using parameter resolvers so there is more than one way to parameterize the query including EL expressions, reflection or a value map on the data provider.
Spigot also provides a few other add-ins like converting any dataset into an in-memory dataset that can itself be paginated and sorted and shared across an application (such as commonly used data in a web application). The
IndexedDataProviderCache can give you random access into a dataset with caching and look ahead loading. This lets you hook a dataset with thousands of rows up to a Swing JTable with an instant response and a very small memory footprint since it doesn’t need to load all the objects at once as the provider will load the records as needed and cache the results. This is demonstrated in the Swing Demo in the download. There are also demos for Wicket and CDI with JSF.
You can ready about why I created Spigot in the documentation