Thursday, March 25, 2010

GlassFish Product Roadmap Updates - Versions 2.1.2, 3.0.1, 3.1, 3.2, 4.0


As announced a few days ago, EclipseCon delivers details about the future directions of GlassFish. After the first details came up yesterday, there was a more detailed session today. As always, this is only second hand information, as I am not affiliated to Oracle. If you are looking for authoritative answers there are other places to look at (see links and readings below). You will find the following information there too in the next few days ;)

Changes to GlassFish in general
First: It's easy to talk about the changes, because most things will not change. GlassFish will stay Open Source (mostly GPL/CDDL). It will have non-Oracle commiters and a (more) transparent development process in general. And you will be able to download the GlassFish Open Source Binaries from the places you are used to.
The available AddOns will remain closed source. And this is the future way of delivering any integration works for other Oracle products. In short: You will not have to care of any Oracle specific middleware or features if your are staying with the Open Source distribution.
The glassfish.org environment will stay the same. You will have all the mailinglists, forums and wikis in place, as you are used to. Same for the source and binary distributions.
There will be an additional oracle.com site about Oracle GlassFish where your will find additional information about the commercial offerings. This includes the formal documentation, support and the licensed versions you can use for production.
UPDATE (3/28/10)
The Oracle GlassFish (commercial distribution) licenses WILL change. It will be available under the Oracle Technology Network Developer License and under a productive deployment license. Pricing will change, too. As usual for Oracle this will be a per processor pricing. Details will become available during the next weeks. If you are unshure what to do, contact your sales rep.

Naming changes
You have to adjust the names you were used to. The two basic offerings will be called:
- Oracle GlassFish Server (this is the commercial distribution)
- GlassFish Server Open Source Edition (the OSS licensed version)
No v2 or v3 anymore. Just the numbers.

Upcomming Releases
We are going to see two kind of releases in the next time. First are the so called 100day Releases. They will basically cover the products as they are and put a new branding in place. I also expect the supported environments to extend to at last the popular ones for Oracle. There will be a 100day release for GlassFish 2.x and 3.x. The 2.1.2 will contain patches and the new branding, and will be released this summer. The 3.0.1 also contains the new branding, patches but will also deliver a multi-language release and provides basic interoperability features with WebLogic Server. It will be available this year summer, too.

Those two will be followed by the normal feature releases; at last for GlassFish 3.x. All 2.x will go to maintainance mode after the 100day release.
Actually the following represents the basic timeline that is know up to now:

GlassFish 3.1 (2010 H2)
- Centralized Administration / Clustering
- High Availability / State Replication
- More value added features (e.g. Coherence support)

GlassFish 3.2 (2011 H1)
- Improved Cluster / High Availability administration
- Integration with Oracle Fusion Middleware
- Virtualization Support
- Some Java EE 6 spec updates
- Some Java EE 7 EA

GlassFish 4 (2012 H2)
- Common Server Plattform - sharing best of breed components with WebLogic Server
- Java EE 7 RI

Comments
After the first rumors around this is not a big surprise at all. GlassFish will stay the reference implementation for Java EE and will survive. But much more beyond this we will see both Oracle Java EE Servers growing together. There are no further details around about the plans for GlassFish 4.x and up to now this is only speculation again. But it seems to me that "sharing components" between both could mean more than simply running the same codebase for selected features. I believe this could lead to a general server platform which allows for only a few components/services to be different from each other. I am very excited to see both systems moving into a common direction.
The provided roadmap only applies to the GlassFish server. There are a couple of things around it. One to mention is the GlassFish Tools Bundle For Eclipse. Nothing special has been announced for it so far. But Oracle also has the Oracle Enterprise Pack for Eclipse (OEPE) in place. The situation seems quite similar to the two servers. But I expect a near-term solution here.


Further Links and Readings

https://glassfish.dev.java.net/roadmap/
http://www.oracle.com/technology/products/glassfish/

UPDATE 3/25/10
The first link refers to the PDF slides of the presentation done by the GlassFish gang yesterday evening at EclipseCon.

Wednesday, March 24, 2010

Article in german iX Magazin (04/2010)


Again some personal advertising here. German iX magazin (http://www.ix.de) published a new article in my recent Java EE 6 series in the upcomming 04/2010 issue. It is an overview about the new dependency injection mechanisms in Java EE 6. (available from tomorrow 3/25/10)

German abstract:
Dependency Injection in Java EE 6: "Direkteinspritzer"
Die Java Specification Requests 330 und 299 haben es kurz vor Torschluss in die Java-EE-6-Spezifikation geschafft. Gemeinsam bilden sie die Grundlage für die typsichere Injektion von Abhängigkeiten. Die nicht unumstrittenen JSRs haben den Anspruch, die besten Funktionen aus etablierten Frameworks wie Seam, Guice und Spring zu vereinen und als Standard zu etablieren.

You can read the whole article online (german only).

Tuesday, March 23, 2010

Getting started with (GSW #3): Grails on Weblogic 11g (WLS 10.3.2.0)


Next in my GSW series is a topic I want to write about since some time. One of my co-workers left the company (never will get it, why ;)) and moved on to a Groovy company. After having heard him talking about the "fancy" part in Groovy I was looking for a way to get this into my favorite Java EE appserver. Found it in Grails.

Grails is a dynamic web application framework built on Java and Groovy, leveraging best of breed APIs from the Java EE sphere including Spring, Hibernate and SiteMesh. Grails brings to Java and Groovy developers the joys of convention-based rapid development while allowing them to leverage their existing knowledge and capitalize on the proven and performant APIs Java developers have been using for years.
(Quote: http://www.grails.org)


Prerequisites
- You should have an Oracle Weblogic Server 11g R1P1 in place. If you don't,
get it from the Oracle Technology Network's download page.
- Grep a copy of the lates Grails 1.3-M1 (download takes some time..)

Installation
Extract the 48MB archive into any folder to your haddrive. You should stay away from spaces or any other weird characters. X:\grails on Windows or ~/grails on Unix is a nice place.
Now you need a suitable environment variable that points to your installation folder. On Windows you do this with
set GRAILS_HOME="X:\grails try export GRAILS_HOME=~/grails
Now check, if you have a JAVA_HOME environment variable defined. If not, do this now. It should point to your JDK installation. You find one inside the Weblogic product installation directory. (e.g. %WLS_HOME%\jdk160_14_R27.6.5-32).
Next is to append a reference to the "bin" directory within the Grails directory to your PATH variable (eg %GRAILS_HOME%\bin on Windows or $GRAILS_HOME/bin on Unix).
Open a command window on windows or simply type "grails" in your shell. You should see a help message.

Create an empty Grails project
Once you have installed Grails and veryfied that everything is running you can start using it. First step is to
create a new project. Use the built-in target for creating one. Change to the command line and enter:
grails create-app
Some magic happens to the std_out. Watch out for the script to prompt you for the name of your application. I used "wlssample" here. After the script executed completely you find a new directory in the filesystem which is named after the application name you entered. Explore the directory structure. If you are used to Java EE webapplications you probably will not find anything surprising here.

Create a Domain Class
Having an empty app does not make sense. Let's add a persistent object, a Domain Class to it.
Make shure you cd'ed to the root directory of your new project.
grails create-domain-class
The script asks for a Domain Class name. Enter one. Responding to the command with "book" will create a file
called Book.groovy in %appname%/grails-app/domain. You can edit it with your favorite text editor or IDE.
Modify it to look like this:
class Book {
String title
String author
}


Create a Controller
Ok. An app, a Domain Object. We are still missing the UI. All this starts with a Controller. Grails Controllers are central to Grails applications. They handle web requests and URLs of the request map to a controller class and a closure within the class.
Another target assists you with this. Run the
grails create-controller
target and type in the name of the controller. In this example I use the name "Book" again, which generates a controller called BookController.groovy in the directory %appname%/grails-app/controllers.
To make this example as simple as possible we use a feature called dynamic Scaffolding. It allows you to auto-generate a whole application for a given domain class. In your case for the Domain Class Book. Open the controller and change it to look like this:
class BookController {
def scaffold = Book
}



Fire it up with Tomcat
To see, if you did everything the right way you can fire up the included tomcat and take a first look at your application. Type:
grails run-app
and point your browser to
http://localhost:8080/wlssample/
You should see something like in the following screenshot. Congratulations! You have your fist Grails App up and running.

Package a WAR File
But we want to run this on our Weblogic. To get this up an running we need to create a web application archive (WAR) file from the project. There is a simple script out there to package it. Type:
grails prod war
This will place a %appname%-0.1.war file in the %appname%/target directory. Now browse to your weblogic console application (typically found here http://localhost:7001/console/), login and click left on "Deployments". Click the "install" button and browse to the target folder. Select the %appname%-0.1.war file and click "Next". Choose "Install this deployment as an application" and click "Next". Don't change anything on the next screen. Simply klick "Finish".
If everything went perfect, you will see two simple confirmation messages stating that the deployment has been successfully installed. Now point your browser to:
http://localhost:7001/wlssample-0.1/
There you are! Congratulations. You have your sample Grails app up and running in Weblogic Server!

Further Links and Readings
Grails Documentation
IDE Integration
More Plugins

Your Firefox, your Oracle style!


FireFox 3.6.2 is available. This was my start to play around with a new feature available since some time. It is called Personas. Personas are easy-to-install, easy-to-use themes that change the look of your Firefox web browser. There are thousands of Personas to choose from, with more added every day. Click here to visit the Personas gallery and start looking for designs that fit your style.
All you have to do is to install the personas add-on and restart your FF.
Now you can choose different styles from the growing gallery or even create your own.

I tried this today. And this is, what I came up with. Hope, you like it :)
And no: This is not available for Download. I don't want to get in trouble with Oracle at all. I think it would be good idea to ask @oracletechnet (Justin Kestelyn) if you would like to have an official OTN/Oracle FireFox persona :)

Monday, March 22, 2010

Featured ACE on Arch2Arch


This nearly slipped though my inbox ;) I was featured in the March 2010 edition of the Oracle Arch2Arch newsletter.



This newsletter is driven by the famous and always listening Bob Rhubart (@brhubart). He is the Manager of the Architect Community at OTN. Thanks Bob :)

What is OTN?
Oracle Technology Network is the world's largest community of developers, DBAs/sysadmins, and architects using Oracle products with industry-standard technologies. Millions of members collaborate via OTN every day to share real-world expertise and best practices about how to best design, build, deploy, manage, and optimize applications.
Not already a member? Join! it's free :)

Resources:
Subscribe to the OTN Arch2Arch Newsletter.
Subscribe to more Oracle Newsletters.

Wednesday, March 17, 2010

clouds ... word clouds ...


Clouds ... that is what I read in the media these days. I am shure, that we have to stand this hype for some more time until we see the next one.
Anyway .. I have not too much time these days for postings or other bigger contributions to the community. I do not even have time to write any further articles. Thank god, that I have a job like this :)

Here is what was time for today. I discovered Wordle again. Found it some months (?) years (?) ago and I made a new Wordle from my blog content today.
Thanks for staying tuned during the more silent times on this blog.

Thursday, March 11, 2010

Getting started with (GSW #2): GlassFish v3


As promised, the next GSW will be dedicated to GlassFish v3. Conceded, I am not a fan of GlassFish since the beginning. Our friendship had a difficult start. But let's forget about this for now and focus on things that makes it more easier for beginners to get started without all this.

As you know Java and have read and understood the first part in this series GSW #1 you now have a good understanding about Enterprise Java. If you want to start developing Java EE applications all you need is an application server. There are plenty out there. And if you have been in the business for quite some time, you get to know them all. The containers-only, the full-blowns, the wannabees, the professionals. Even if I call them this way, there is no judgement in it. If the application server/container of your choice is a Java EE compliant one, you are on the right track. This list is not too long these days, if you look for Java EE 6 compliant servers. The most prominent and well-known is also the Java EE 6 reference implementation (RI): The Oracle GlassFish v3
GlassFish v3, is the first compatible implementation of the Java EE 6 platform specification. It is a lightweight, flexible, and open-source application server. And according to the latest statements from Oracle Productmanagement, it will stay open source.

Download and Installation
You can get your hands dirty if you grab the latest distribution from the GlassFish download page. There are bascially two different distributions available. One full-blown Java EE 6 and the lightweight Java EE 6 Web Profile. They differ in the sum of the contained technologies. For further details, scroll down the download page and look for "What's in GlassFish Open Source Edition 3.0?". The tables gives a detailed overview about the technologies in both versions. Every version can be optained for three different platforms. One for Windows based systems, one for Solaris, Linux and MacOS X and a platform-independent zip archive.
I suggest, you are running a Windows maschine as development platform, so we start over with downloading the self-extracting GUI installer for the complete Java EE 6 GlassFish (48MB, exe). Evevn on a slow line, this should not take more than a couple of minutes.
I did not mentioned, that you could have a Java Development Kit (JDK) 1.6 in place already. If not, go: Install one now! It is not needed for the installation. GlassFish brings his own. But I prefer to have different versions in place and install them separately. Next step is to launch the the installer. Now follow these steps:
  • It welcomes you with a nice screen. Click "next".
  • Read and agree to the licence agreement. Click "next".
  • Choose a destination directory. Click "next".
  • Choose a Adminport (default:4848), Http-port (default:8080), Admin-Username (default: admin) and Admin-Password (recommendation: adminadmin). Click "next".
  • If you want automatic updates and you are behind a proxy, enter your proxy information. Click "next".
  • Choose a JDK from the list or tell the installer where to put it's own. Click "next".
  • Now you are ready for the installation. Click "install".
  • Wait for the installer to finish his work.
  • If you like to, register or sign in to your Sun online account. Click "next".
  • Now you can review the installation process. Click "finish".


You have sucessfully installed your GlassFish v3 server! congratulations!

Start your domain
Now browse to the directory, you installed your GlassFish to. Let's call this %GF_HOME% further on. You see a %GF_HOME%/glassfish/domains directory. This is, where you put your domains. The concept of a "domain" refers to something we could call an "administrative domain". A domain (statically) is an administrative name space. It's a boundary, all GlassFish entities within which are controlled by an administrator. If you look at the directory, you can see, that there already is a "domain1". Let's start it :)
Open a cmd and cd to %GF_HOME%/glassfish/bin.
Now enter: "asadmin start-domain"
If everything went well, you see a couple of stdout messages stating, that your domain ist working:
Admin port for the domain: 4848
Command start-domain executed successfully.

Start the administration console
Ok. Now you have to take a look at the administration console. Point your browser to: http://localhost:4848/. It takes some time until the login screen appears. Login with your admin user and the assigned password (you did this during the installation :))
If you see the following screen, you are on the right way:
The next screen you see, is the welcome screen. You start administrating your complete domain from the left treeview.
As you would have expected, its an empty domain up to now. Nothing specific is deployed, and you can start adding your own resource, configuration and deployment settings.

Now we are going to develop and deploy a very simple application. All you need for this is maven, and a texteditor. Have a look at my GlassFish v3, CDI, Maven, Eclipse post for details. If you have your war file, go back to the administration console.
  • Click "Applications"
  • Click "Deploy"
  • Select the archive, you would like to deploy (either upload or browse the local filesystem)
  • Click "ok" (upper right) and wait until finished
  • Click the "Launch" link in the table right to your new deployment
  • This points your browser to http://localhost:8080/yourwebapp

You have sucessfully deployed your first application to GlassFish v3 server! congratulations!

Further Links and Readings
Oracle GlassFish Enterprise Server v3 Quick Start Guide
Oracle GlassFish Enterprise Server v3 Administration Guide
Oracle GlassFish Enterprise Server v3 Application Deployment Guide
Oracle iGlassFish v3 Datasheet (PDF)

Monday, March 8, 2010

Getting started with (GSW #1): Java EE 6


You may find some usefull posts on this blog from time to time. Most of them are solutions or information to or about problems I came across in daily work. Recently a co-worker told me: "You have some great posts, but I don't have a clue how and where to apply them." It did not feel good simply replying: "Thank you, but ...."
To get this into context, he is a specialist of an other area wanting to extend his knowledge to Java EE in general and WebLogic Server.

I decided to add another category to this blog. Dedicated to my fellow co-worker and his needs for information :) Let's call it GSW .. Getting Started With ... and I'll fire it up with the first post about Java EE 6. This is anything but a tutorial. This should only guide you through the information available to get a neat start.
If you have any idea what to cover next: I would love to know. Leave a comment or send a reply on twitter (@myfear).

The basics
If you are willing to dive into Java EE you should have a basic knowledge about Java. I assume you did some programming and already know about the JVM, the JDK and one or more integrated development environments (IDE). Take a break now, if you need to revisit your knowledge about Java. Look around http://java.sun.com/. I can recommend the New to Java Programming Center as en entrance for anybody not already knowing the basics.

Extending the reach
Developers today use the Java and the JVM for a broad range of applications. But starting with the standard Java SE edition, you recognize, that there is additional need for distributed, transactional, and portable applications that leverage the speed, security, and reliability of server-side technology. That is, where Java EE comes on. It was known as Java 2 Platform, Enterprise Edition or J2EE until the name was changed to Java EE in version 5. The current version is called Java EE 6.
The concept of Java EE is only one part of the whole Java platform concept, that adds additional capabilities (compare Java Technology Concept Map ,PDF). If you look at the following Java EE architecture diagramm, you can see, that the Java EE defines additional containers on top of the  Java SE. They are responsible for executing well defined objects with a defined lifecycle within their own domain. That is the most general definition that I can think of.


(Source: Java EE 6 Spec, copyright Sun/Oracle)

What exactly is Java EE?
Java EE is a set of features for enterprise Java that is definied by its specification. Driven by something called the "Java Community Process" (JCP) it is an umbrella for roundabout 30 different technologies. Containing but not limited to JDBC, EJB, JPA, RMI, JMS, web services, XML, etc. It basically defines the technical contents and how they are coordinated. That includes component models and their lifecycle.
I did a nice flash representation of all contained technolgies. Have a look at it. If you try to become a specialist in Java EE you are going to face round about 6000 pages of specification. But it's to earyl to be afraid of this :) If you stick to the offical "The Java EE 6 Tutorial,Volume I" you are done in under 600 pages.

Container and Application Server
A Java EE application server can handle transactions, security, scalability, concurrency and management of the components that are running on (deployed to) it, in order to enable developers to concentrate more on the business logic of the components rather than on infrastructure and integration tasks. There are some providers for either single containers (e.g. OpenEJB, Jetty, etc) or complete Java EE application servers out there. Any provider must meet certain conformance requirements in order to declare their products as Java EE compliant. You can see a list of compliant servers on the Sun website.
Up to now, there are two certified servers out there. The most interesting one is GlassFish v3. If you want to start over with Java EE it is a must have. Because I don't want to mix up things here, there will be a GSW #2 about GlassFish v3 next.

Quickstart
If you want to start programming right away, get yourself the GlassFish Tools Bundle for Eclipse. It comes with a great User Guide (PDF).

Further Links and Readings
Java EE Downloads: GlassFish and Java EE 6
Java EE 6 Technologies
Java EE Tutorials
Java BluePrints

myfear flame




myfear flame, originally uploaded by myfear.
Ok. Here we are :) This is an awesome webbased tool. You can create any kind of flames with it. Flash Java! (Thanks to @alexismp, my bad fault ...) based.
I totally fell in love with it :)

Make your own:
www.escapemotions.com/

Thursday, March 4, 2010

Basic Thoughts on Architecture and Design Reviews


I did some architecture reviews in the past. Most of them internal but also for my company's clients. At the end of the day this always has been and probably always will be a thankless job. For many reasons. This post was thought of as an incomplete list of things to keep in mind while doing this kind of reviews and should give you some advice.
If you have your own experiences on this, I would love to read about them in the comments.

You the reviewer?
The bottom line for all kinds of reviews is, that you take a deep look the thoughts of other people and rate the implementation based on them (documentation or code). It is normal, that you are external to the project team. You probably do not even know them before and they don't know you. This is the main reason, you should make your approach and overall goals transparent to them before looking into the details. Point out, that you are not there to blaim anybody (you are not!). If you are working on internal projects you could also point out, that your work helps the team members getting better for the next projects. The sensitivities raise with the project size and your distance from the project team. Work professional; have your opinions in place; rest in yourself. And most important: never work alone! You always do any kind of review with a peer.

Why doing the review?
There are a couple of reasons, you should do reviews on projects. The simplest case could be some kind of pre production check. For this you have to proof, that the software complies to the company's specifications. Mostly you also have to pass some kind of gateways in the used software development process where reviews are mandatory. You could try learning from failure and review failed projects. Or do checks on behalf of your customer.
In general you always have to check some implementation or documentation for compliance against standards or best practices. In general it is best to always follow these steps in your review process. It's called DRIVE and it is an approach to problem solving and analysis. I also like to use it for rewiews.

Define: the scope of the problem(s), the criteria to check.
Review: the current situation, understand the background, identify and collect information.
Identify: analyze the review results.
Verify: rate the review results. Together with a peer.
Execute: improvements or solutions from the results. Draw conclusions.

Compliance review
Checking for compliance is "easy". This is done against any kind of software development process or any other standard. If you are using for example OpenUP or TOGAF, you have checklists at hand (see ressources). They should guide you through all relevant parts. In other cases, you even have predefined gateway checklists you could work on. Anyway: Before starting, remember that it should always be an option to adjust them to you needs. You have a defined project order and you should focus on that. The bigger the checklist(s) grow, the more you have to evaluate.

Metrics review
In some cases you could also think about using tools for your reviews. We are not talking about source code reviews here, so this is not obvious at the first sight. But there are tools out there, helping you to judge on the implementation of a special architectural approach. Think of JDepend or the Dependometer. Both perform static analysis of physical dependencies within a software system. Any kind of metric analysis should be already setup with the project. So you probably only have to check the generated metrics.

Interviews
If you are doing interviews with the team, you should try to keep the sessions as short as possible. Whatever system/project you are looking at, try to find one interview partner per "tier" or "layer". Which view/methodology or concept you use here is unimportant. This approach helps you to schedule the interviews and assists you in a basic coverage of all relevant parts.
You should try to keep discussion to a minimum. Go with the checklists and work through your questions. Even if you are willing to share your knowledge. Try not to do this during the interview. There is room for it later on in your report.
Don't forget to do a transcipt of the conversation.

Result communication
This highly depends on the requirements. Could be any kind of presentation and/or document. Most important: stick to the truth. Refer to the place of discovery of the problems. Don't communicate a problem without a solution. If you discover one, also briefly think about the solution.

Online resources:
TOGAF -- The Open Group Architecture Framework
OpenUP
Google for Architecture+Review+Checklist
Short abstract about DRIVE (PDF)