Java EE Is Dead -- Completely Dead

J2EE was "killed" by Java EE 5 and JDK 1.5 (J2SE 5.0) in the year 2009.

After another 10 years Java EE 8 also became an obsolete dead end. There will be no more Java EE 9.

Jakarta EE 8 starts where Java EE 8 ends. There are no new features on purpose - so there is also nothing to migrate. However, a binary compatible Jakarta EE 8 API can be already used instead of the legacy Java EE 8 API.

Jakarta EE 8 comes with a collection of specifications (except PDFs), JavaDocs, TCKs a list of compatible runtimes and a news aggregator:

See you at Web, MicroProfile 3.X and Jakarta EE 8 Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home:

The Popularity Of Java EE 6 In China Or Java EE 6 At JavaOne Beijing

I was warned that chinese audience isn't interactive - ...and it is absolutely not true. I got actually so many questions in my overcrowded (>20 attendees had to stay outside :-)) talk "The Feel of Java EE 6: Interactive Onstage Hacking", that I had no time any more for the implementation of JPA 2 persistence and the explanation of Bean Validation. Got very good questions regarding the use of EJB, CDI, annotations, incremental deployment, WebLogic Java EE 6 availability and especially migration from J2EE 1.4 to Java EE 6. We continued the conversation even after the talk. The audience was very nice - and I had lots of fun. So if you are going to give a talk in China be prepared for good questions!

It seems like the popularity of Java EE 6 is not only an European / American phenomenon.

Swing Looks ...Great (Part VI macwidgets)

macwidget is free (LGPL) Swing UI toolkit

You can easily integrate macwdigets with your existing Swing Models.

[Thanks to Rene for the hint]

Swing Looks ...Great!

The theme for Synthetica called "BlackEye" looks compelling.


There is also a WebStart demo available (works smoothly on Mac). Synthetica is distributed under a commercial license, but is free for non-commercial applications.

Apple Joins openJDK, and Java FX on Lion?

Apple joins the openJDK project. The JavaOne 2000 promise, that Mac OS X will be the best OS for Java may be actually kept. With IBM, Oracle and Apple, openJDK becomes a really interesting project - good news for Java. It also means: Java FX 2.0 will run on Lion...

Gosling's Thoughts On "Next" - Oracle, Lawyers And Fun

...One of my personality quirks that makes my "what's next" question more difficult is that most of the things that interest me are science projects rather than sensible business plans. I'll be having fun....

Read the whole post.

GlassFish will be Killed, Closed Source, Children's Edition And The Official Response

Oracle's official GlassFish roadmap (also clustering, HA and Java EE 7, GlassFish v4) summarized on 14 slides. The excellent Java EE 5/6 portability (vendor-neutrality) story and this slide deck should give GlassFish the next popularity/adoption boost.
[I borrowed the title from slide 4]

James Gosling Leaves Oracle

It's sad, but James Gosling leaves Oracle. I'm really curious about his next job...
An excerpt from his bio: "...He briefly worked for Oracle after the acquisition of Sun. He is now blissfully unemployed :-)..."

Oracle Data Sheet About ...Glassfish

"...Oracle GlassFish Server is part of the Oracle Fusion Middleware application grid portfolio and is ideally suited for applications requiring lightweight infrastructure with the most up-to-date implementation of enterprise Java, Java EE 6, and Java Web services. Oracle GlassFish Server complements Oracle WebLogic Server, which is designed to run the broader portfolio of Oracle Fusion Middleware and large-scale enterprise applications..." Read the whole paper.

Simplest Possible EJB 3.1 Timer - Configured Programmatically

@Singleton @Startup public class PeriodicTimer { @Resource TimerService timerService; @PostConstruct public void initialize(){ ScheduleExpression expression = new ScheduleExpression(); expression.second("*/1").minute("*").hour("*"); timerService.createCalendarTimer(expression); } @Timeout public void execute(){ System.out.println("----Invoked: " + System.currentTimeMillis()); } }


A timer doesn't have to be a singleton - it can be a @Stateless and even a @Stateful bean. The method execute() will be invoked every second after the deployment. The programmatic registration is only an option. You could also use annotations for the timer configuration.

How to compile:

You will need the EJB 3.1 API in the classpath (few kilobytes).

How to deploy:

Just JAR or WAR the interceptor with an EJB and put the archive into e.g: [glassfishv3]\glassfish\domains\domain1\autodeploy

Btw. the initial deployment of the entire WAR took on my machine:

INFO: Loading application ProgrammaticallyCreatedTimer at /ProgrammaticallyCreatedTimer
INFO: ProgrammaticallyCreatedTimer was successfully deployed in 316 milliseconds..

How to use:

Another service can be easily injected to the timer and so invoked periodically:

public class HelloService {
    public String sayHello(){
        return "Hello from control: " + System.currentTimeMillis();

And: there is no XML, strange configuration, libraries, additional dependencies needed...You will find the whole executable project (tested with Netbeans 6.8 and Glassfish v3) in: [project name: SimpleTimer].

[See also "Real World Java EE Patterns - Rethinking Best Practices"] 

Online Workshops
...the last 150 posts
...the last 10 comments