Friday, October 28, 2011

OEPE 11gR1 first roll out of Oracle's Public Cloud Tools - an early test drive

The new Oracle Enterprise Pack for Eclipse 11gR1 (11.1.1.8) aka OEPE was released and beside some very fancy and exciting new ADF features (Task Flows and Libraries) and updated Coherence integration you also find a little remark about the "Oracle Public Cloud Tools" (refer to OEPE release notes). WOW! That is exactly what I was waiting for! Here we go. I tried to give it a very brief test drive.

Setting up your project
As expected it was not meant to be test driven at this point. It seems as if you "could" but you are missing a bunch of stuff, so I needed to trick around a lot to at least show you a bit of what will be possible. First step is to create a new "Oracle Public Cloud Web Project". Not a single word about Ear projects or other artifacts. This still seems very introductory and opens a lot of questions. But I was not going to wonder about this today and simply start over with what is there. After you have chosen the right project type you have to configure your cloud target.
This is done by specifying the a new or reusing an existing cloud target. Beside the service group and instance you have to specify an administrator and his password. Last and most problematic the wizard is asking for a "Cloud SDK". As you might imagine, this is not part of the OEPE distribution at this point so I had to trick around and create a couple of fancy named files (javacloud.jar, oracle.cloud.paas.api.jar and whitelist.jar) to make the wizard believe I have what he needs. Is it worth mentioning, that the "Test connection" facility will not work with this setup? ;) But it's there. You can also directly jump to open up your (trial?) account on http://cloud.oracle.com.
Next you need to specify a local target. It's most likely a simple WLS installation you have to refer to. So I took what I have and pointed the wizard to my 11gR1 (10.3.5) install for that. I did somehow expect to be able to select a target domain with this dialog, too. But it was not asking for that. Some other weird stuff  happened, and I am not sure if it is meant to work like this for the final version what probably will be out in the next OEPE (11.1.1.9 ?).

Your first Oracle Java Cloud App
That's it. Now you have your first Oracle Cloud web application in your latest OEPE. It's very unspectacular. A simple dynamic web project with WebLogic server as it's runtime. Without any special additional jars (at least non of the ones mentioned above; could also be because of my 'dirty' work there). You can create whatever resource you need and either run it on your local WebLogic or on the newly specified Oracle Public Cloud (in this case eiseleNetDemo.eiseleNet) which also directly appears under your Eclipse Servers tab. Some other things to mention:

Access logs and control panel
You can access the control panel of your cloud in the same way as you can directly jump to online log viewers for your application and the java service.


This is integrated with the server panel and you can simply "open" the dialog.

Whitelist scan
It will also be possible to test your applications before deployment with integrated whitelist scans. The whitelist tool can be called explicitly on a project (on demand scans to highlight coding violations). If configured with the full Cloud SDK correctly it will also support as-you-type validation, project build validation. You will see that the errors are reported in application source, the Problems view, and a new Whitelist violations view.


Niviaq
Some classes that OEPE is missing in my dilettantish setup contain the Name Niviaq in it. According to google this is the East Kalaattisit name for "cloud". You hardly find any references to details on the net. Only some job offers in the bay-area telling your, that
...pre-packaged PaaS enablement offerings that we provide such as Nuviaq ...
I'm not sure why Oracle is releasing OEPE and it's obviously unusable Public Cloud features at this state. It makes me believe, that it could be a sign of a very tough timeline all related projects have to fulfill. The JDeveloper and NetBeans integration is announced and I personally am waiting for the Cloud SDK. So, let's stay hungry and foolish for clouds ;)

Tuesday, October 25, 2011

Get a free Structure101 license by visiting your local JUG!

According to a post by Michael Huettermann Headway the company building (and selling) Structure101 is giving away a fully functional perpetual license of Structure101 to one attendee, and one Restructure101 to another attendee ...... at each JUG meeting! This is all organized by your local JUG leader (refer to more details about this in Michael's post).

 
What is that structure101 stuff all about?

 Structure101 is a tool to help define and communicate your architecture and layering rules to the whole team. The rich, intuitive architecture diagrams express containment, visibility and layering. Map blocks in diagrams to physical code with patterns that are used by structure101 to discover and display violations. I personally have used it with a couple of projects in the past and it's fast, reliable and unique with it's features. If you need a more detailed example: Here is a screenshot of a analysis I did with an older Primefaces milestone-build.



And restructure101?

Restructure101 let you do simulated sandbox refactorings of your architecture while you detangle your codebase without risk, removing unnecessary complexity and dependencies. The sandbox uses Unique Levelized Structure Maps (LSMs) that let you see exactly the details you need in the context of the whole code-base. Manipulate the LSMs interactively with drag-and-drop simplicity to simulate structural changes. I haven't had the pleasure to test drive this one but it also sounds promissing.



Now: Go ahead! Visit your local JUG and make sure to spread the news to your JUG leaders! And don't forget to say: Thank you Headway!

Monday, October 24, 2011

The Heroes of Java: Cay Horstmann

The fifth part in my Java interview series: "The Heroes of Java".

Cay Horstmann
Cay; Looking a bit surprised about
the photographer he didn't know ;)
Java Leaders Brunch JavaOne 
grew up in Northern Germany and attended the Christian-Albrechts-Universität in Kiel, a harbor town at the Baltic sea. He received a M.S. in computer science from Syracuse University, and a Ph.D. in mathematics from the University of Michigan in Ann Arbor. He was VP and CTO of Preview Systems Inc. that went from 3 people in a tiny office to a public company in four years. He now teaches computer science at San Jose State University. Being the author of two of my first ever Java books qualifies him to be among my Java Heroes (beside the fact, that he is a born German :))

General part
Who are you? 
I teach computer science, write college textbooks and professional books, and code as much as I can in my copious spare time. I learned a lot in several startups, both about software engineering and running a business. I was born in Germany but came to the United States as a student, where I witnessed the birth of the personal computer and the internet.

Your offical job title at your company?
Professor?

Do you care about it?
The title, yes, absolutely. When I was an undergraduate in Germany and addressed my professor as "Herr X", he let me know in no uncertain terms that I was to address him as "Herr Professor Doktor X". So I decided I'd be a professor too. Except, here I get emails addressed to "Hey Cay" or "Hello Hortsman".

Do you speak foreign languages? Which ones?
German, a bit of Chinese, and now I am re-learning French.

How long is your daily "bootstrap" process? (Coffee, news, email)
15 - 30 minutes. I try to get some work out of the way early in the morning.

Twitter
You have a twitter handle? Why?
Yes, cayhorstmann, so that nobody else can grab it.

Whom are you following in general?
Nobody.

Do you have a personal "policy" for twitter?
Never, ever to use it. The few times that I did, I regretted it. To me, it's very distracting and the information density is abysmally low.

I like Google+, which is a powerful indicator that it is doomed.

Does your company restricts or encourages you with your twitter ussage?
I am not sure they know what it is.

Work
What's your daily development setup? (OS/IDE/VC/other Tools)
Ten years ago, I switched from Windows ME to Linux, and I never looked back. I am using Ubuntu right now, but not with any of the UI glitz. Just OpenBox.

I use whatever IDE is best for a particular task. NetBeans for Java EE, Eclipse for Android, IntelliJ for Scala, Emacs for simple projects where an IDE would get in the way.

My preferred version control is Mercurial. I find it simple and logical. But if a project uses Git or Subversion, I'll just use that.

I automate lots of processes, so I use a fair amount of bash, and the various Unix power tools (sed, curl, imagemagick, pdftk. Ant with Ivy for build automation, now moving to SBT. (I never could love Maven.)

Which is the tool providing most productivity to your work?
Perhaps surprisingly, it is my XHTML editor. Being a book author, I naturally write a lot, and I also need to make lots and lots of presentation slides. Put me in front of PowerPoint, and it's an endless mousing and clicking and fussing with fonts and alignments, and the simplest tasks seem to take forever. I asked my colleagues who use Word and PowerPoint what they did to crunch out material quickly. Style sheets? Macros? My colleagues stare at me blankly and say it takes them forever too.

That's no good. For slides, I use HTML Slidy. I added a CSS style for "bullets with image to the left", grab an image from the web, and have the image and bullets sized automatically. I just focus on the contents.

When writing about programming, I always need to worry where monospaced code starts and ends. In Word and PowerPoint, this seems to depend on the phases of the moon. In XHTML, it's obvious.

Why not Docbook? It seems too hard, and it restricts the choice of editors. I can do any formatting task that I need with a bit of CSS. If someone else needs Docbook from me, I can convert XHTML to it.

For XHTML editing, I started out with XMLMind, which is a good program. But I prefer open-source tools when possible, and now I use Amaya,

Your prefered way of interacting with co-workers?
A mixture of email, Skype, hallway chat, traditional meetings, and meeting over lunch or dinner. Nobody likes formal meetings, but they can be useful when managed carefully. No Twitter :-)

What's your favorite way of managing your todo's?
Remember the Milk or Emacs Org Mode

If you could make a wish for a job at your favorite company: What would that be?
I always envied Gilad Bracha's position as chief theologian at Sun, but of course he knows so much more about programming languages than I ever will that I'd probably just embarrass myself if I had such a job.

Java
You're programming in Java. Why?
I used to program in C and C++, and when Java came along, I thought "No garbage collection? cross-platform libraries that actually do stuff (i.e. GUIs, database)? Where do I sign?"

That was in 1996. It's hard to remember how far ahead of its time Java was of its commercial rivals.

Then Java became open-sourced, which it means that it will live forever once those wretched patents expire.

To make me move off the JVM, you'd have to offer me an open-source cross-platform alternative with more/better libraries than in the Java universe. Let me know if you find one.

As for the Java language, I use Scala for new projects when I can. It's more fun. What's important is that it runs on the JVM and interoperates with Java libraries.

What's least fun with Java?
The "stack trace from hell" in Java EE.

If you could change one thing with Java, what would that be?
Properties

What's your personal favorite in dynamic languages?
(This space intentionally left blank.)

Which programming technique has moved you forwards most and why?
I'd like to say "functional programming" because it is fun to build very generic and reusable mechanisms, but the truth is much more boring.

1) Strong typing.
In the bad old days of pre-ANSI C, I wasted an enormous amount of time with runtime errors. You could call fread with the parameters in the wrong order, and it compiled, ran, and flaked out. If you were lucky, you got a core dump. C++ changed my life. It took forever to shut up the compiler, but when a program ran, it actually had a fair chance of doing the right thing. My productivity multiplied.

2) VM bounds checks and garbage collection.
In the bad old days of C and C++, I wasted an enormous amount of time with memory allocation bugs. In Java, all that went away in an instant. My productivity multiplied.

I am lucky to have had this effect twice in my lifetime. Note that it came from changing from "really bad" to "ok", not from "good" to "great".

Where could similar improvements come from in the future? Here are a few suggestions.
- Get rid of the stack trace from hell
- Get rid of callbacks/event driven programming in client-side UIs and web apps
- Make concurrency less painful

What was the biggest project you've ever worked on?
A scientific word processor for DOS that I wrote as a graduate student--about 120K LOC of C code.

Which was the worst programming mistake you did?
To follow the official specifications when trying to port that word processor to Windows. I should have reverse engineered Word to find the undocumented OS calls that were necessary to get continuous line breaking at an acceptable speed. That mistake taught me something about the value of open specifications and open source.

Tuesday, October 18, 2011

My interview with Tori Wieldt (@Java) during JavaOne

Walking around JavaOne exhibition hall was awesome this year. Crowded for nearly the complete day and always people to run into and talk to. Same happened to me with Tori. She is part of the Oracle Technology Network (OTN) team and the face behind @Java's twitter account. We had a great 4 minutes and 07 seconds talk about Java, JavaOne, the community and JavaEE. Thanks for taking the time, Tori. You are doing a great job!

Saturday, October 15, 2011

The Heroes of Java: Fabiane Bizinella Nardon

The fourth part in my Java interview series: "The Heroes of Java".

Fabiane Bizinella Nardon
is a computer scientist who is passionate about creating software that will positively change the world we live in. She was the architect of the Brazilian Healthcare Information System, considered the largest JavaEE application in the world and winner of the 2005 Duke's Choice Award. She leaded several communities, including the JavaTools Community at java.net, where 800+ open source projects were born. She is a frequent speaker at conferences in Brazil and abroad, author of several technical articles and member of the program committee of several conferences as JavaOne, OSCON, TDC. She was chosen a Java Champion by Sun Microsystems as a recognition of her contribution to the Java ecosystem. Currently, she works as a tools expert at ToolsCloud and as chief architect at RBS, where she is helping to shape new disruptive Internet based services.

General
Who are you?
I am a Brazilian computer scientist and a Java developer. I like to create software that will positively change the world we live in, although I have to work hard to find projects that allow me to do so :-) . Besides all the geek stuff I do for fun (hackathons, open source projects, computer disassembling, leading the JavaTools community...), I also enjoy pilates, cycling, spinning, traveling, music. Can I say I'm just half geek?

Your offical job title at your company?
I'm the Chief Architect at the RBS Group/Digital Project, a Brazilian media company.
I'm also founder and technical leader at ToolsCloud, a company that provides development environment in the cloud.

Do you care about it?
I don't care about the title at all. We actually just had to come up with a good title to do the business cards, but, honestly, it could be called anything else. I care more about the job and the challenges that it brings.

Do you speak foreign languages? Which ones?
Besides Portuguese, my native language, I speak fluent English and a little Italian.

How long is your daily "bootstrap" process? (Coffee, news, email)
About 1 hour. It's usually reading emails and Twitter on the iPad while having breakfast. Depending on the amount of emails and how many interesting tweets I find, I can have time for reading the news or not.

Twitter
You have a twitter handle? Why?
Yes. It's @fabianenardon. I started with Twitter just to share bits of life with family and friends. I used to have a private profile and rarely tweeted about technical stuff. Then I started to get lots and lots of followers requests and it became harder not to share my technical thoughts. So, at some point I gave up, opened my profile to the world and started tweeting more about technical stuff. Since then, my non-technical friends say that they don't understand a word of what I say and I suspect most of them are just not following me anymore.

Whom are you following in general?
I follow my friends, my co-workers and people in the IT industry that I find interesting.

Do you have a personal "policy" for twitter?
Yes. Don't tweet about what could be considered company secrets, be polite, never bash co-workers or employers. Although I tweet about my life in general, I try not to share too much, to preserve some privacy.

Does your company restricts or encourages you with your twitter ussage?
I don't think there is an official policy, but almost everyone in the company uses twitter. It's a whole new dynamics in the work relationships when you can follow your co-workers, your boss, your employees... I found very useful to know what they think, how they are feeling, etc.

Work
What's your daily development setup? (OS/IDE/VC/other Tools)
I work on a MacBook Air, mostly with GIT, but I still have a few projects on Subversion. If I have to open an IDE, my choice is Netbeans, but for many things I just develop in a text editor with syntax highlight, like Smultron. My projects are mostly Maven based and the command line is my preferred way to do things.

Which is the tool providing most productivity to your work?
I don't know if it can be considered a tool, but I have to say MacOSX. My productivity increased a lot when I moved from Windows to the Mac.

If I have to choose a tool, I would say Firebug. When working with web development, it is a life saving tool.

Your prefered way of interacting with co-workers?
I still prefer face to face conversations, although I also enjoy working from home, and then Skype and IM are the my preferred tools.

What's your favorite way of managing your todo's?
I always use TodoTXT (http://todotxt.com/). I'm a command line person, what can I say? Besides, TodoTXT was written by a girl, which is kinda cool.

If you could make a wish for a job at your favorite company: What would that be?
I would love to work only with development and program all day with smart co-workers, doing a life changing software.

But, at this point in my life, it is hard to be able to do only software programming. I usually have lots of mentoring and managing activities, which means that I have tons of meetings to attend too. I guess this happens to most successful developers once they get more experienced. I just try to do enough programming so I can still keep my skills.

Java
You're programming in Java. Why?
I like the language and all the possibilities it brings. I love how many open source tools and frameworks are available in the Java universe. Java has also an awesome ecosystem, with JUGs, communities, multiple languages, conferences and so on. It is a very collaborative environment and I always felt welcome in the Java community.

What's least fun with Java?
Compiling and redeploying applications :-) . If you worked with dynamic languages, you realize how more productive you can be if you can skip these steps. Of course, there are frameworks and tools that allow you to do this with Java, but these are not always available.

If you could change one thing with Java, what would that be?
I would remove the need for getters and setters and make the language less verbose.

What's your personal favorite in dynamic languages?
Groovy.

Which programming technique has moved you forwards most and why?
If I think about my whole career, I have to say "Object Oriented Programming", for the obvious reasons. But the technique that I think made me a better programmer was defensive programming. My software is a lot more reliable because of it.

What was the biggest project you've ever worked on?
The Healthcare Information System we did for the Brazilian government. It as a huge software that was first deployed to the city of Sao Paulo, where we connected 800 clinics, 20,000 physicians and stored health data from 14 million patients. We had hundreds of EJBs, 1,5 million lines of code and an incredible number of complex business rules. And from conception to production, we did everything in 9 months. This got us a Duke's Choice Award in 2005 and has improved the quality of care for millions of people that use the Brazilian public health system. I'm also glad that the project was open sourced and now it has taken a life of its own, with new people taking care of it.

Which was the worst programming mistake you did?
There were so many... hard to choose :-) But I remember one situation that was kind of embarrassing. I was creating a software to visualize medical images for a large hospital. After finishing my code, I was over confident and decided to test it directly against the production database. Of course, there was a memory leak and I took the whole hospital down for about half an hour. This was a long time ago and I learned my lesson.

Thursday, October 13, 2011

Oracle WebLogic Java Cloud Service - Behind the scenes.

More on the Open World side of happenings one big and probably unexpected announcement was that Oracle is finally supporting the cloud movement and offering their own public cloud service. Beside the official announcements, some more or less content-less posts on The Aquarium (here and here) you don't find a lot of information what exactly to expect from the offering. With this post I am trying to bring some light to it by interpreting the publicly disclosed information. As usual: I could be right or wrong. Watch out for some more posts from Reza Shafii. He recently started blogging about the "Java Cloud Service".

Larry: 'if you need a cloud, you need a cloud'
The famous quote of Larry Ellison during his keynote simply expresses what exactly the cloud move means for Oracle. Being on a complete private "own-your-own-exa-cloud" strategy since the announcement of the Exadata maschine this shift is a huge one.
Seeing Larry presenting with slides that have the word "Java" on it over and over leaves the most of us wondering and could even scare the hell out of the rest of us. One could think, that the new Java EE 7 specification and it's move toward PaaS and IaaS comes right in time for the new strategy. But before I am going to fire at will, let's get back to the initial motivation of this post: What the hell are the guys running underneath and what could you expect as a developer or customer to find in the Oracle cloud?

Oracle software and hardware
The official specs of the Java Cloud Service give a very high level overview about what to expect. WebLogic 11g is the Java EE container of choice. Meaning, that you will probably be able to deploy Java EE 5 applications only with the first version. Even the supported Java EE spec versions strongly lead into that direction (EJB 2.1, 3.0; Servlet 2.5, JSP 2.1) The database on the other hand is a 11gR2. If you look back to some other slides presented at OOW, it's not a too brave guess, that Oracle is running this stuff on a combination of Exalogic and Exadata. And I also guess, that you will be able to monitor and administrate your WebLogic Domains with the help of the new Enterprise Manager Cloud Control. Looking at the fact, that Oracle is promissing instant provisioning I also assume that they are using the virtual assembly builder in combination with some preconfigured templates to get your WebLogic Domain um and running. It would be nice to see a dedicated OVM instance for every single cloud account. The fact, that you have to target your application to a complete cluster indicates, that you will not be able to select the managed servers during deployment explicitly.

Development for the Oracle Cloud
But that will the development for the cloud be like? According to the public features, there will be a tight integration with JDeveloper, Eclipse and NetBeans. Seeing the command line interface together with ANT I believe that the first IDE integrations will have very limited capabilities and you would probably simply be able to deploy the stuff to your cloud. I assume that in any of the three IDEs you will have a new server configuration option which handles all needed configuration (host, port, user, pwd) accordingly and a simple "run on server" will start the deployment process. The spec also mentions a whitelist (check for supported APIs) and an SDK. So it's fair to guess, that the IDEs also will do some pre-flight checks for your applications before putting them onto your cloud. Your applications obviously don't need to implement proprietary Oracle APIs (like google requires for authorization or DB access) but again by looking at the specs it seems as if you will not be able to use the complete set of WebLogic and Java EE 5 APIs. Seeing the mention of EJB with explicitly "local interfaces" could indicate, that RMI will not be in it. What that means for failover and session replication is unclear as of today. Also it seems as if you shouldn't think about deploying anything else than war and ear files. If this will include the WebLogic library mechanism is unclear. It seems as if anything else than http isn't allowed to hit your applications. Not even inbound SOAP Webservices are possible according to the specs. Nice little Oracle addon is, that you can obviously take advantage of the full ADF stack (Faces, Bussiness Components). Seeing the ADF Web Services Data Controls with a separate mention let's me believe, that there are other restrictions or versions about Data Controls in general.

Conclusion
This is the part of the post where I probably should be very excited and tell you, that this is the most open, best and single cloud offering available today. Maybe I am a little bit too early for a general conclusion, but let's look at the plain facts as of the time writing this:

Contra:
- Only Java EE 5 (with restrictions) => That's a few years old now, right?
- Pricing => Unclear until now. They could screw up the whole thing instantly!
- Only WebLogic => What about GlassFish? We need an ExaFish !

Pro:
- WebLogic => that's fine. Especially as I expect the license to be included with the subscription?
- Running on Exa stuff => probably the finest hardware available. Under full control of the manufacturer.
- Only Java EE => No additional, proprietary stuff needed. Portable. Standards based.

Let's lean back and relax a bit until the first official versions are available. I am very very looking forward getting my hands on this stuff.

Tuesday, October 11, 2011

Java EE Past, Present, & Cloud 7

One prominent topic of the recent JavaOne 2011 was the next major Java EE 7 release. As stated in the keynotes, the work on it is well underway. It will contain the 28 specifications we already know from the forerunner plus a number of new specs. Nobody can tell you about the exact number at them moment because EE 7 will only accept the new specifications if they finish "in time". Which means, the planned release date for EE 7 (Q3 2012 Final Release) is a superior goal which sets scope and pace. Candidates for inclusion include Jcache 1.0 (JSR 107), Concurrency Utilities 1.0 (JSR-236), State Management 1.0, Batch Processing 1.0 and JSON 1.0. This ambitious goal is only one thing that makes me wonder. But let's start at the beginning.

New Java EE 7 spec lead Linda DeMichiel (picture to the right) detailed the general approach in their keynote part. The big focus with Java EE 7 is getting Java apps into the cloud. With the steps taken from J2EE to Java EE the general service approach was integrated into the platform. Meaning, that developers are able to use services and have a declarative way of consuming them. Beginning with Java EE 7 the platform itself should become a service. In the meaning of providing sufficient ways of enabling PaaS (Platform as a Service) with Java EE application servers. Basically to enable customers and users of EE to leverage the complete range of clouds (public, private and hybrid). This should be reached by adding new platform roles, metadata and APIs which support the needed requirements like multi-tenancy, elasticity and scalability. Beside the new kids-on-the-block, also the proven specs need a bunch of updates to support these requirements.
Looking at the bullet-point topics that are already there for the 9 "work-in-progress" specifications should bring a bit more light into how to achieve the "cloud goal".

JPA 2.1 (JSR 338)
The first spec to include new features is the JPA 2.1. The new features can be described with the following short list:
- Multi-Tenancy (Table discriminator)
- Stored Procedures
- Custom types and transformation methods - Query by Example
- Dynamic PU Definition
- Schema Generation (Additional mapping metadata to provide better standardization)

JMS 2.0 (JSR 343)
This could be considered as the most mature spec in general. It had a long 9 years to go since it's last maintenance release (April 2002).
- Modest scope
- Ease of development
- Pluggable JMS provider
- Extensions to support “Cloud”

EJB 3.2 (JSR 345) The goal of Enterprise JavaBeans 3.2 is to consolidate these advances and to continue to simplify the EJB architecture as well as to provide support for the Java EE platform-wide goal of further enabling cloud computing. The scope of EJB 3.2 is intended to be relatively constrained in focusing on these goals.
- Incremental factorization (Interceptors)
- Further use of annotations to simplify the EJB programming model
- Proposed Optional: BMP/CMP
- Proposed Optional: Web Services invocation using RPC

CDI 1.1 (JSR 346) Since the final release of the CDI 1.0 specification a number of issues have been identified by the community and a update to the specification will allow these to be addressed. A list of proposed updates is provided here, however the EG will consider other issues raised as the JSR progresses.
- Embedded mode
- Lifecycle Events
- Declarative package scanning
- Global ordering of interceptors and decorators
- Injection Static Variables

Servlet 3.1 (JSR 340)
In developing the servlet specification 3.1 the EG will take into consideration any requirements from the platform to optimize the Platform as a Service (PasS) model for web applications. Beside this, the following areas should be addressed.
- Cloud support
- NIO.2 async I/O
- Leverage Java EE concurrency
- Security improvements
- Web Sockets support
- Ease-of-Development

JSF 2.2 (JSR 344) The new JSF JSR will be a significant feature update that builds on the advances from the previous JavaServer Faces versions.
- Ease-of-Development
- HTML 5 support (Forms, Headings, Metadata)
- New components
- Portlet Integration

JAX-RS 2.0 (JSR 339)
JAX-RS addresses most requested community features. To name a few: - Client API
- Hypermedia
- The primary API utilized for validation will be the Bean Validation API
- Ease-of-Development

Expression Language 3.0 (JSR 341) The Expression Language (EL), has been part of JSP specification since JSP 2.0. In Java EE 7 this will become a separate JSR.
- Standalone JSR
- Easier to use outside container
- Criteria-based Collection selection
- New operators
- CDI events for expression eval

Bean Validation 1.1 (JSR 349) Being a version 1.0, Bean Validation stayed on the conservative side feature wise. The community has expressed interest in additional features to enhance the work done in the first version of the specification.
- Integration with other JSRs (JAXRS, JAXB, JPA, CDI, EJB, JSF)
- Method-level validation
- Constraint composition

Cloud? Is that Rain?
Looking at the proposals it's clear that some of them have room for cloud enabling. Some don't care at all. Searching for the cloud stuff is very little successful until now. Let's look at the umbrella JSR 342. The official pages are public and can be found on http://java.net/projects/javaee-spec/. Very interesting is the Java EE 7 Platform and Support for the PaaS Model document (PDF), which describes the overall architecture for PaaS support in Java EE 7. And by comment is largely agreed to by the expert group. It summarizes needed roles (PaaS Product Vendor, PaaS Provider, PaaS Account Manager, PaaS Customer, Application Submitter, Application Administrator, End-user) and gives a couple of example scenarios in which they act in a PaaS environment. Further on you find some definition and terms:
PaaS Application:
"A discrete software artifact containing domain-specific code that can be uploaded to and deployed on the PaaS environment by a PaaS Customer. The artifact may consume PaaS resources and be distributed across multiple JVM instances according to QoS settings and/or an SLA. Depending on its terms of use, a PaaS application may subsequently be deployed on the PaaS environment by potentially any number of other PaaS Customers."
Tenant:
"Since in the model described here a PaaS Customer corresponds to an isolation domain, we will use the term “Tenant” to avoid misunderstandings with other uses of the word “customer” in the business context."
Application Developer:
"We will use term Application Developer to denote an application developer in the common sense. In the traditional Java EE terminology, this role is split between Application Component Provider and Application Assembler."
Additionally you find the mandatory statement about "protecting" investments:
It is a goal of Java EE 7 to add to the platform support for the PaaS model as well as a limited form of the SaaS model while preserving as much as possible the established Java EE programming model and the considerable investments made by customers, vendors, and system integrators into the Java EE ecosystem.
(Source: The Java EE 7 Platform and Support for the PaaS Model)
Looking at the qcon London slides by Jerome Dochez you quickly notice, that there is a lot more stuff to take care of, than what the expert group covers with the public documentation:
- Better Packaging for the Cloud (Modular Applications)
- Versioning
- Deployment Model
- SLA Monitoring
- Billing
And I am sure, you could come up with even more. The GlassFish / Java EE Strategy & Roadmap (PDF) presented by Adam Leftik & John Clingan at Oracle Openword paints a more detailed picture of the future by looking at:
- Dynamic Service Provisioning
- Iaas Management
- Elasticity using Auto-scaling
- Monitoring
- Hypervisor Abstraction

Until now this seems like the most complete and concrete approach to Java EE in the cloud. Seeing the GlassFish team doing a presentation with the latest GF 4.0 release candidate you can imagine how far work is completed. (Even if I assume that there is still plenty of work to do :))

No Rain but it will be cloudy for some time
A lot is evolving at the moment. This is what was expected with changing direction in a mature specification. Looking at the new Oracle cloud offering and the continuing cutting-edge work the GlassFish team is doing I believe, that the ambitious goal could be meet because we have enough business value behind that. What I fear is, that single specifications could deny the inclusion of "needed" cloud stuff in favor of bug fixes or community requests. This is the first time the umbrella specification is emerging into a complete different direction, than the containing children. On the other side, as we know from the past, the umbrella itself is a comparable small specification which specifies on a very general level of detail. This could open up opportunities for vendors in general. Let me add another point here: I strongly believe that Java EE 7 will be biggest challenge for the spec lead since ages. Following the overall "cloud" theme without distracting or prioritizing the single contained specifications will be a very political job in general. Even if Linda DeMichiel is a Java EE veteran I believe that a lot of work is waiting here.

Summer 2013 vs Q3 2012 Final Release - missed opportunities
The real big issue I have with the timeline is the fact, that we don't have a chance to get a real modular approach for application packaging. Whatever will be designed in terms of packaging (and related stuff like versioning, SLA, and more) for the cloud will not be able to take advantage of the new project Jingsaw features coming with Java SE 8. I personally consider this a major requirement for cloud enabled Java EE PaaS infrastructures. If the new cloud metadata will be build upon the Java EE 6 packaging specification it is a missed opportunity to adopt latest and greatest in Java modularization. I am very curious to see, how the EG will work around this issue without having to rework everything with Java EE 8 again.

Leaked: Oracle WebLogic Server 12g

JavaOne is nearly one week behind us already and I am still working on the detailed blog posts about it. One thing I was really surprised of is the fact, that I didn't see a single mention about an update to my favorite application server out there. Yes, I love the WebLogic product. Since the beginning. Even if Oracle is making this a hard love for me since the acquisition of BEA.
Especially the late adoption path for Java EE 6 was a point that forced me to look into other servers. Thank god, we have GlassFish as the reference implementation. Sticking to WebLogic with all the little Java EE 6 preview stuff in it wouldn't be satisfying at all.

WebLogic at OpenWorld and JavaOne
Have you seen it? You probably have. But the server versions running on the laptops in the DemoGrounds were some reasonable recent versions of the 10.3.x.x also referred to as 11g. And this is still the old Java EE 5 version of it. And even the latest bug fix release was shipped way back in May. So I was really looking forward to see a 12g somewhere. Even if it was under the table or in a dark room in the back. Nothing like this happened. At least not officially. But something else hit my inbox a few days back. A little demo video or better a screen-cast. But have a look and tell me, what you think:



In 30 Seconds - WLS 12.1.1.0 Web Project with NetBeans
The video starts with a normal Java EE 6 Web profile based web-project with enabled CDI.

Servlet without web.xml
After the project is created, you see (someone) creating a WebServlet called DemoServlet with path mappings to different URL-Pattern. The package names indicate, that this was thought of as an Oracle OpenWorld presentation. The WLS is obviously running on a 64-bit HotSpot Java SE Milestone Build (1.6.0_26). Even if the WLS start up time seems to be comparable to what I see with 11g today, I wouldn't bet on this to be the fact for a final GA release.Running a browser against the app shows the servlet responding accordingly. Changes to the servlet code seems to be hot deployed to the server. So no surprises here.

Context and Dependency Injection
After 3 minutes and 20 seconds a simple POJO is created with a simple getter returning a smiley. This little smiley is injected into the servlet. Here we go: CDI rocks! Furter on, the Smiley interface is introduced and we get a couple of different flavours of smiles injected via custom qualifyers. An exception reveals, that JBoss Weld is in use. No further details about the version. Around minute 7 a javax.enterprise.event.Event is introduced which is a simple String event getting fired by servlet access. A corresponding EventCapcha class receives the events via an @Observer method, adds them to a list and prints it to out. The EventCapcha class is exposed as session scoped bean and gives access to the events list.

JSF 2.0 with facelets

Ok. This is not new. We have JSF 2.0 since a while with WLS. Now we have the full power with CDI integration. Around minute 11 a simple JSF template with a h:dataTable component is created which shows the fired events.

Conclusion
The video ends at exactly 13 minutes and don't show any of the other Java EE 6 goddess. But it's by far more than we had seen until now about Java EE 6 running on WLS. And quite impressive to see WLS moving again. Don't ask me about anything beyond this post. I DON'T KNOW about timelines, I DON'T KNOW about versions (the ones statet here were taken from the screen-cast) and I especially DON'T KNOW about when you finally will be able to test drive this new WebLogic 12g by your own. What I do know is, that I am surprised to see this "leaked" way after Open World. It seems as if it simply doesn't fit into whatever strategy decisions have been made. I loved to watch this little screen-cast and I am badly looking forward having this in my own hands and giving it a test-drive with all the stuff we have created with GlassFish until now.

Tuesday, October 4, 2011

Java SE 7, 8, 9 - Moving Java Forward

Today was keynote day. JavaOne Keynote was happening this early morning from 8:30 to 10:30 am and one more time my press pass got me into it quite early. So I had the time taking some very personal pictures from all the key players while they were getting ready and probably nervous. Ballroom A+B is quite a big room. In contrast to last year they changed the arrangement and put the stage on the long side. That brought many people closer to the happenings and it was a great feeling at all. I also partly enjoyed the little warm-up movie. Even if there was a odd feel to it seeing all the diverse people running around. Even if I am slightly overweight, I would prefer to see some very cool kids running through such a video. Anyway: Nice work. Next time please try to get the Black Eyed Peas for that ;)

Intel outside please
The Keynote began with Doug Fisher, CVP Intel. He brought a number of colleagues onto stage together with their Oracle peers to reviewed Intel’s long association with Java and their optimization work for the Java platform on Intel hardware. it was all about performance gains and being x times faster than they were before. The guys seem to all read from the teleprompters and it really wasn't a great joy to watch them making jokes they were obviously practicing before. What should I tell you? Nice slides. Next slide deck please! It was boring and would have made a reasonable Open World Keynote at all. Many commercial products in it and not a word about what they really brought forward in terms of Java. This was something I wouldn't mind if it is missing next year. And this did not get better as Oracle's Ashok Joshi came onstage to very very briefly introduce Oracle's NoSQL solutions (hardly without naming it...). You can find out on the web about it. I guess all is out about this one since today. But I will skip the details here until I got my hands on it.

Welcome to the Future - Java 7
Charles Oliver Nutter - Mark Reinhold
After a little confusions about who and what is next, Mark Reinhold, Chief Architect of the Java Platform Group appeared on stage and took the attendees on a ride through the recent history of Java 7. All along the way with “Plan B” and the pragmatic approach of including Project Coin (JSR 334), InvokeDynamic (JSR 292), and the Fork/Join Framework. Special guest was Charles Oliver Nutter from Engine Yard. He gave a very brief overview about the performance advantages InvokeDynamic made possible for JRuby.
Mark has a good way in presenting and he even got the hardest bits out with lightweight slides and fluent words so it was a pleasure to follow him along the benefits of these key features of Java 7. Most important for all developers is, that “Not only are these features available in Java 7 today,” noted Reinhold, “but as of last week, they are now supported in all three of the major Java IDEs.”

Moving forward - Java SE 8
Mark Reinhold - Project Jingsaw
Followed by what was already known since some time Mark detailed the plans for Java 8 a bit. After having the evolutionary release with Java 7 this is going to be a revolutionary one with the features far beyond those introduced with Java 7. Project Lambda (JSR 335) will bring closures to the Java programming language. And Project Jigsaw (JSR TBD) aims to define a standard module system -- not just for application code, but for the platform itself. Especially the latest makes it possible to only have the needed bits with your distribution of choice. As he states, there will be Java distributions available starting at 10 MB. A new Java Script Implementation called "Project Nashorn" will also be part of it. Followed by Type Annotations (JSR 308), the new Data/Time API (JSR 310) and Sensors which should be a way to natively connect to a device's hardware sensors available. "Plus more to come ..." is the last bullet point on this slide. So, we have to expect some more stuff beside the ones mentioned.

General Availability of JavaFX 2.0
Stunning JavaFX demos
JavaFX was next. As many already expected it took quite some time away from the keynote. Richard Bair, Chief Architect, Client Java Platform, official announced JavaFX 2.0 and gave some stunning demos of the new facilities.According to him, JavaFX 2.0 was designed to offer:
- Cross Platform
- Leverage Java
- Advanced Tooling
- Developer Productivity
- Amazing User Interfaces.

No longer being eye-candy "user interfaces that look good and work well" are a requirement for the things we do, said Bair. The most important aspect of any UI technology are good visual development tools. Surprise was, that the early access for the JavaFX Scene Builder, which will first be made available to select partners, then expanded to a general beta, and then a full release. You can get your hands on and early build it at JavaOne at the DEMOgrounds. Most applause came from the fact, that the official demos and documentations are BSD licensed and part of the bundle, you can download. This simple stuff was followed by a series of stunning demos by Oracle's Jasper Potts. He showed the possibilities of the new client platform including animated 2D and 3D, audio EQ mapping, and a navigable 3D virtual room that featured live video.

Is that Rain? - Java EE 7 in the cloud!
Arun Gupta taking GlassFish 4.x for a ride!
With all the rain going on in San Francisco some could think, Oracle did too much with all the cloud topics around. Anyway, Java EE.next as announced last year will be driven by the cloud. Linda DeMichiel, Java EE 7 SpecLead did a nice job explaining the upcoming Java EE 7 release. “We’re moving Java EE into the Cloud." DeMichiel said. The focus on this release is providing support for Platform as a Service (PaaS). Java EE will provide ways for it's users to leverage public, private and hybrid clouds. It will all be about the platform as a service itself, which will be leveraged in cloud environments. After a real short general introduction, which could lead to the impression, she is not knowing what she is talking about (which isn't true btw!) Arun Gupta came on stage. You all know him as the GlassFish and Java EE Evangelist! He demonstrated the latest GlassFish 4.0 Bits with a Java EE 7 cloud deployment. You can do this yourself following the instructions provided at: http://glassfish.java.net/javaone2011/

JavaCard
Finally Hinkmond Wong, of Oracle’s Java Embedded group gave an overview of the latest in JavaCard technologies. By that time attendees started moving out of the keynotes. It was a very long one with a lot of topics in general and so I can understand every single one moving out.

Interpretation
What does all this mean? Any surprises? Anything unclear or need further thoughts? Not really. Compared to last years excitement there are hardly any exciting things on the agenda. Nobody is complaining, no big surprises. This is good. It means we have calmed down a bit. The trust is building and Oracle is obviously doing more stuff in the open (especially the works around OpenJDK should be mentioned here) and we do see a lot of technical progress in the complete platform in general. Of course, we do miss some faces from last year. And knowing a little more than you out there, I can think of a few more things to come over the next few months. But this will not be negative surprises, so it's easy for me to keep the secrets for some more time.

Impressions GlassFish Community Event

A really short post to point you to my flickr.com/myfear photostream. I caught some impressions from the latest happenings and posted them there. Below is a mosaic of the GlassFish Community Event happening yesterday.


Monday, October 3, 2011

Day 4: Meeting the Community - Java, GlassFish and ACEs

The jetlag left me alone since yesterday. Thanks guy. I hate you and I am really happy to be able to sleep again. The fourth day was all about community. It started with the annual DOAG breakfast at the Marriott. It's always fun to meet the board members which make it to OOW and talk about all the stuff going on. Thanks Fried and Dietmar for the kind invitation!

Java Community Leaders Brunch
Afterwards I headed directly to the Java Community Leaders Brunch. Even if I am not a JUG Leader or Java Champion I am one of the few ACE Directors which have a very close relation to Java and it's community. I'm saying, that I am not only into Oracle's products but also try to do my best to help with Java community building. It was an honor to be there. It was an awesome lineup of people. to name but a few:
- Adam Messinger
- Cameron Purdy
- Henrik Stahl
- Nandini Ramani
- Mike Lehmann
- Mark Reinhold
- Donald Smith
- Roger Brinkley
We have been given the latest information about Java SE, ME, EE, Embedded and JavaFX. Waiting for the big news? I have to dissapoint you. Everything was, again, given under NDA and you therefore have to wait a few more days until the general technical sessions have been held and the keynotes are over. You will hear nothing world changing (except one thing probably) and you will be pleased with what you see and hear mostly. The best part for me was to meet so many people I only know from twitter or Email. Martijn Verburg, the names from above, Stephen Chin, Bruno Souza, Fabiane Nardon, Cay Hostmann, Stephan Janssen and soo many more. Thanks for having me there! The best part was my little chat with Mark Reinhold. He is on my list for the Heroes of Java series. He got the questions already and I know that it was not possible for him to answer them before J1. But now at least he knows about me and the background about the series and I am looking forward to his answers. Wanna know how he is? He's a normal and sympathetic guy. It's fun to chat with him. And believe me: we did not talk about Java :)

GlassFish Community Event
Done with that, I joined Alexis and Adam Leftik to run over to Moscone. That's where the GlassFish Community Event was waiting in room 2020. A big room as I can tell you. And the community stuff continued. I've finally met Laird Nelson and Johan Vos. Alexis, Arun and Anil were giving a short overview about GlassFish and it's future. Followed by some customer case studies and a great community building event, where they build the GF Logo from Lego. Awesome. A big thank you to OTN again for supporting the team with a new version of the GlassFis t-shirts! Running in the cloud is printed on them and this is also the topic for Java EE 7. As usual there is no NDA stuff in here. GlassFish is free and open and you know where to follow the latest developments. The slides and some pictures will be posted to the aquarium and I keep you updated with the latest information.

Sunday opening Keynote
A nice tradition is to attend Larry's first welcome keynote on Sunday. I like to see the people floating in. They are talking about 45.000 attendees and only a fraction of it makes it to the keynote room. But even that is impressing. Having a press pass, I was able to do some pictures. Find them on flickr.com/myfear. There weren't any surprises here. Most of the stuff he was talking about was unveiled a few hours earlier. They now have a SPARC Supercluster and the new ExaLytics. Impressive numbers in terms of performance and hardware. Especially the ExaLogis is still something I would like to get my hands on. Anyway: Like it or not, we are going to see more of those ExaEverything machines in the future. Not a word about Java this year. Ok. Thanks for now. I left early. Security started pushing me around a bit. Seems as if I was trying to get too close with my camera.


ACE Dinner
Another tradition I really appreciate: The annual ACE Dinner. Happening at Sens this year again. It's wonderful to catch up with all the ACEs and ACE Directors. After having seen most of the ACED since Wednesday we reached the point where technology and Oracle were behind on topics to talk about and we get a chance to talk a bit more about families, children and the year in general. To me it always feels like a Christmas evening. catching up with the family. Today is going to be packed with meetings and the Java One Keynote. Seems as if I need to get ready for this now.

Sunday, October 2, 2011

Day 3: My day off.

After a couple of days packed with information today was my day off. Together with Björn, we took a car and did some sightseeing and errands. The best part is, that you get to see a lot of stuff, if you have somebody at your site with enough SF experiences. Even if I am an alumni and have seen a lot in the past few years, Björn is an awesome guide. And he is brave enough to drive a rental car through this insanity called traffic.

A must see spot is the Golden Gate. You have seen a lot of pictures of here before and if you are standing right on or next to it, you are thinking about how those guys took those awesome pictures. I can tell you: There is a lot to do to find out. There are nice beaches and hills around and you have to drive around a bit to find the right angle for your picture.


If that is done, you can spend hours watching the clouds change their face and direction, looking at the different lightning options and further and further. To make it short: It was a wonderful day.


With a lot of pictures taken. I am going to upload this stuff tomorrow to my flickr account and you can judge for yourself.

Having brought back the car, it finally was time to register for JavaOne and OpenWorld. As usual I have the pleasure to have a Blogger Pass. This basically brings you in to any separate location and you have some other really small stuff at hand to guide a professional writer through this hugh event. All this was crowned by a nice dinner with the German DOAG Team at the La Mar restaurant. Now it's time to face tomorrow. A lot of stuff up-coming: Java Community Leaders brunch, GlassFish community Event, ACE Dinner and GlassFish Party. So. I will be busy tomorrow and hope to meet a lot of people I only know via twitter. Safe travels to all of you still incoming to SFO!

Saturday, October 1, 2011

Day 1+2: ACE Director Briefing at Oracle HQ

As you might have read, I am attending the ACED Briefing yesterday and today. So, this basically is the first briefing we have under nearly complete NDA. So we hear a lot (if not all) of the interesting stuff to come during Oracle Open World but we are not allowed to speak, blog or write about it until the announcements were officially made. And if I say that this is about upcoming stuff during the OOW this post is not referring to anything happening in or around the Java space!

Great, because I have time to prepare some detailed blog posts and make sure you can read about anything timely. But bad for the online broadcasting approach I was doing last year. You don't see me complaining here. I am very very happy to finally have a briefing under full NDA. I mean it's a thing of building trust. Even if the ACE Directors are called by Oracle and we are probably closer to some of their stuff than others, we are still externals to them. Anything they share with us preliminary is a little of a victory against an organization many people think of as a big container ship. Hard to get up to speed, to change direction or even stop. Even if I believe that this description isn't true for every part of Oracle it's still a challenge to get all the recent and accurate information or news you need to support customers out there.

Big news around for Oracle; but for Java?
Until now we have seen a lot of improvements and announcements to come up. Some is allready floating around the net and parts of that could be true. Wait a few more days for the complete set of details.Java wasn't a big issue on the list this year. After the emotional speech about it by T.Kurian last year I was expecting to see quite a bit. That didn't happen. Reasons could be, that Oracle is separating J1 a bit more this year and there is another pre-conference briefing held under NDA tomorrow for the Java Leaders. An awesome lineup of names on the list. Not only from the community but also from Oracle. I am really looking forward meeting all those people and catch up with the latest in strategy and news.
As Tim pointed out, it's amazing to see Justin, Vikki and Lillian picking the right names for presenting on the topics we ask for.
"I don’t think many people can pin down Thomas Kurian for an hour this close to Open World. It says a lot about the amount of work Justin, Victoria and Lillian have put in over the last few years, that they can get this level of buy-in for the program.
And OTN is not only doing this for the ACEs. They are also taking care of the Java Community by handling the Java Champions program. So they are busy herding cats during the upcoming exciting week.

Forecast
Today will be my day off. So don't expect any big news around. Tomorrow is the day we start into User Groups Sunday. The Java Leaders Brunch is followed by the GlassFish Community Event and the Oracle ACE Dinner. Follow me on twitter for short bit's and pieces. Looking forward meeting a lot of people in SFO!