Java User Groups
The results of the most recently completed Java.net poll suggest that awareness of the Adopt-a-JSR effort within the Java developer community continues to increase, albeit at a perhaps modest pace. Still, growing awareness is a strong positive for any long-term effort. And the Adopt-a-JSR program is certainly intended as a long-term effort in promoting and guiding the future of Java.
on May 20, 2013
Your First Mikado Graph
by Ola Ellnestam and Daniel Brolund, authors of The Mikado Method
The Mikado Method is a structured way to make significant changes to complex code. What that means, is rather than getting caught up in the complexity of moving parts, analyzing the entire codebase and doing guess work, the Mikado Method removes the least amount of obstacles at a time in order to achieve...
on May 15, 2013
Frans Thamura is a leader of JUG Indonesia, a Java Champion, an entrepreneur, and the founder of Meruvian. He has implemented the JEDI program in Indonesia under the goverment's Java education services JENI Project.
In this fourth Java.net "Lightning Interview" I asked Frans about starting and leading a Java User Group.
1. Why did you decide to start JUG Indonesia?
on May 12, 2013
Robert Engels works for OptionsCity, which develops financial service platforms using Java. Their products include Freeway, a multi-asset algorithmic trading platform that won the 2012 Chicago Innovation Awards. Robert is the Chief Architect for Freeway development. If you're familiar with modern automated trading, you'll also be quite aware of the necessity to achieve maximal performance....
on May 3, 2013
Ahmed Ali leads the very active Egyptian Java User Group (EGJUG). EGJUG recently organized Java Developers Conference 2013, the largest Java conference in the Middle East. The conference was, once again, a huge success.
In this second Java.net "Lightning Interview" I asked Ahmed the same questions I asked London Java Community (LJC) co-leader Martijn Verburg (@karianna) in the first Lightning...
on Apr 21, 2013
Tuning Java code presents many challenges and addresses several goals.
One of these goals is to make the application "run faster".
Recently, our end-users were getting multiple-second response times from our web application's home page.
This was unacceptable.
We were asked to see what we can do to make the web application "run faster".
We began by looking at the usual suspects... database access...
on Apr 14, 2013
Setting up SBT and an SBT Build
by Joshua D. Suereth and Matthew Farwell, authors of SBT in Action
The simple build tool (SBT) is a tool for building Java and Scala projects. SBT aims to build well and allow users to customize endlessly, but above all, SBT strives to provide consistency of basic concepts so that, once learned, you don’t have to unlearn them as you dive deeper into the build...
on Apr 12, 2013
Domain Model Metadata
by Christian Bauer, Gavin King, and Gary Gregory, authors of Java Persistence with Hibernate, Second Edition
The Java Platform, Enterprise Edition (Java EE) standard solves the problem of leaky concerns with metadata as annotations in your code or as external XML descriptors. This approach allows the runtime container to implement predefined cross-cutting concerns—...
on Apr 9, 2013
Have you wanted to do something with asynchronous I/O? I did. After doing some work with Node.js, I wanted to find a way to get some of the goodness of its programming model for Java.
The Acteur project is the result - a framework for building scalable, asynchronous web applications using Netty + Guice - was the result. The programming model is a little unusual - you treat constructors as...
on Apr 7, 2013
This is the first of what I hope will become a series of interviews with members of the Java community. By calling them "lightning interviews," I mean that they'll be brief and to the point, "short takes" focused on a specific topic that's relevant to the broader Java/JVM community -- the interview equivalent of Lightning Talks.
I'm hoping that by making the interviews brief (three questions...
on Apr 7, 2013
Update: In Servlet 3.0, the behavior of using response is undefined after invoking #complete or #dispatch. In Servlet 3.1, it is clarified that AsyncContext#getResponse will throw IllegalStateException. The blog has been updated for this.
Asynchronous operation is supported in Servlet 3.0. I have discussed startAsync in my previous blog, startAsync in Servlet 3.0. In this blog, I will discuss...
on May 14, 2013
Update: Invoke WebConnection#close when there is an error.
Servlet 3.1 Specification (JSR 340) is almost ready for the release. One of the new features is the support for protocol upgrade.
HTTP protocol upgrade was introduced in HTTP 1.1 (RFC 2616):
The Upgrade general-header allows the client to specify what additional communication protocols it supports and would like to use if the server...
on May 7, 2013
Servlet 3.1 Specification (JSR 340) and Java Authorization Contract for Containers (JSR 115) MR3 are almost ready for release. Besides "*", the role-name "**" is introduced in the above two specifications.
In a nutshell, "*" means any role defined in web.xml and "**" means any authenticated user.
Prior to Servlet 3.1, web containers use proprietary mechanisms to add security-constraints for any...
on Apr 19, 2013
Servlet 3.1 Specification (JSR 340) is almost ready for the release. Several new security features have been added in this version of Servlet specification.
In this blog, I will explain one of the security features, namely deny-uncovered-http-methods.
Let us take a look at a simple security-constraint in web.xml as follows:
<web-app xmlns="http://www.w3.org/2001/XMLSchema" ...
on Apr 19, 2013
Update: One should not use response in AsyncListener#onComplete. Only print debug in this example.
Servlet 3.1 (JSR 340) is almost ready for the release. One of the new features is the support for non-blocking IO. ReadListener and WriteListener are introduced to allow non-blocking processing in Servlet.
Non-blocking IO can only be used in async (defined in Servlet 3.0) or the upgrade mode. We can...
on Apr 16, 2013
There are a number of topics JSR 359 EG is working on. These are on a number of different categories. It includes improving the RFC coverage of SIP specification (SIP outbound), Modernizing programming (using POJOs), better alignment with Java EE (CDI, latest servlet spec), SIP over websockets, Extensibility, Better concurrency control, Updates to B2B etc. In this blog series, I am
on May 6, 2013
Java Web Services and XML
By default, all connections to the Oracle Cloud are encrypted:
Browsers automatically import the necessary certificates, however, trying to access these services from a Java client, you will not be so successful. Take this Java Client:
import com.sun.jersey.api.client.Client;import com.sun.jersey.api.client.WebResource;import com.sun.jersey.api.client.config.ClientConfig;import com....
on May 2, 2013
In this blog entry I outline the steps necessary to deploy JAX-RS (JSR 311) RESTful web services to the Oracle Cloud. We'll be using Jersey, which is the reference implementation for JAX-RS, and JDeveloper, which is my primary Java IDE.
Step 1. Create a Jersey Library in JDeveloper
Download the latest version of jersey-bundle.jar, which at the time of this writing is version 1.17.1.
on Apr 30, 2013
In the most recently completed Java.net poll, developers overwhelmingly considered the HTML 5 related enhancements in Java EE 7 to be the most important. The poll highlighted five of the many areas of enhancement that will be included in Java EE 7, and provided a "Something else" option as well. The 1631 votes that were cast represent one of the highest totals for recent Java.net polls.
on Apr 15, 2013
Last week, JFrog's online software binaries repository Bintray was made available to the public. What's Bintray? JFrog's announcement calls it "the first social platform for developers to publish, download, store, promote, and share software libraries (binaries) across a unified community." One way of looking at Bintray is that it's a "GitHub for binaries."
Bintray already has some major...
on Apr 1, 2013