Dec 08

You can get a description there. This released was initialy planned for begining of 2007 and is finally out.

JBossAS 5 provides a healthy foundation and the most
advanced and fully extensible, cross component model, aspect integration, server runtime environment.

Nov 11

G2One is the software company delivering open source projects Grails and Groovy. This company is made of 6 java experts. YOçu can find all the details in this article.

SpringSource expect to integrate Grails in dm server, the OSGi paltform.

Ruby on Rails has now a serioous competitor.

Sep 03

bookJe vous recommande les tutoriaux sur Spring MVC de Serge Tahé. Ce ne sont pas des Quick Start Guides, mais comme l’indique le titre: Spring MVC par l’exemple. Tout y est donc illustré avec des exemples et la couverture me semble exhaustive (pour l’instant je n’ai parcouru que la partie 2…mais elle fait déjà 99 pages).

Jun 20


SpringSource will release sone (around july) the version 1.0 of its application platform: S2AP. I’m having a look at it, especially from a PaaS point of view. S2AP present lots of interest for different perspective, but PaaS is what I’m currently looking for.

First, S2AP makes a big jump in the notion of application server…it’s not an application server but an application platform which is different and open new horizons. The application servers stand for containing applications. These application can be web app, web services…etc, but they are monolothics. With JMX and ear, you can go further in decoupling by allowing multiple micro appplications to be delivered inside the same enveloppe: the ear. But this is not enough: you still deliver an entire ear, you do not handle multiple versions of the same application, you get worried by transitive depedencies for third parties, communication between ear are remote calls. S2AP takes a real new approach. It provide separation/decoupling and allow integration betweens components without remote call (yes, this can be discussed : RPC and AOP proxy vs web service and remote calls). IMHO, this is why we are talking about application platform and not application server as it provide support for multiple components tightly coupled which are all belonging to the same application.

Various technologies tried to hide (or abstract) the fact a method call was remote or not. this is clearly a mistake. Remote calls are integration points, local calls are not. Integration points are fragility and low performances points. Developers and architects must be aware of all of them to ensure reliability and good performances. More over, developping applications mostly based on remote calls is an error and should raise a red flag. With S2AP we get a new approach which keep capabilities of regular applciation server. From a PaaS point of view, it is a significant technolgy jump (we will see the Microsoft response with Oslo project), and an instance of S2AP will be used to deploy all the applications of the SaaS vendor.

Those who read a previous post on my vision of PaaS, could argue S2AP is far from the Software Factory approach. I agree, but S2AP present at least one interesting characteristic: the hot deployment. This is an essential piece of technology to allow deployment of components. The next step are to better project management and source control management capabilities (a kind of mavenization), and allow deployement from one S2AP to another. This way a developper could have it’s S2AP instance to develop (and test) applicitions, then automatique deployment on the S2AP production system. Of course, this last step requires far more than just a hot deployment capabilities…but at least we have the key technological piece. More over all this inetgrations (SCM, PM, Eclipse, test and deployment) can be developed out of S2AP…I hope a lot of satellite projects will appear in that area.

 To conclude, S2AP is a very interesting opportunity for PaaS as it allows a decoupling and componentization of applciations inside a platform and not inside an ear.

Jun 04

I’m currently having a look at spring platform. I’m trying to convert a web application into OSGi module. I get the following error:

Bundle: com.springsource.org.apache.xerces_2.8.1 - Import-Package: org.apache.xml.resolver.readers; version=”[1.2.0,1.3.0)”
 

This means that the bundle xerces requires another bundle having package  org.apache.xml.resolver which is not in your repository. So, you simply ahev to download the bundle from SpringSource Entreprise Bundle Repository, then restart the platform.

Sometimes the message is not so clear (I get with trying to use axis bundle). A way to better diagnose the problem is to use Equinox’s telnet concole.

This console can be accessed via telnet on port 4201. You can download PuTTY telnet client. After connection, youo should have this prompt:

osgi>

Use the command “ss” to list all the install bundles and check for the bundles having status “installed”.

 

You will notice the id of the bundle starting each line. Execute the command “start <id>” to start a bundle, then you should see a clear stack helping you to diagnose the problem.

Apr 30

I had a look at jBoss and wanted to validate its capabilities from a PaaS perspective.

First I prefer to have a kind of factory which includes the minimum software and tools to start. This does not include you JDK that should already be installed. This factory will include Eclipse (I use version Europa Winter (Java EE) 3.2 that you can download here) , maven2 (2.0.8 downloadable here) and jBoss (4.2.2 downloadable here ). I also create a folder in this factory for the eclipse workspace.

Install factory

I suggest to backup it, to reuse a copy of it for each project. Create a folder named factory. Download Eclipse, maven 2 and jboss. Then create a folder for eclipse workspace. You should have something like:

Here are some files (eclipse, vars) to put in the folder factory that will setup environment variables.
Add also a shortcut that will launch a command prompt and use the environement variables setup in vars.bat. Here his the value of the shortcut:

C:\WINDOWS\system32\cmd.exe /k “”vars.bat”"

(you should change only the windows folder according to your machine installation).
Now, update the vars.bat file for the line pointing to your JDK, the other lines should not be changed.

Done, yoiur factory is ready. Next step is to create and build your project.

Project and build creation

Create a folder named as you want (I will use C:\PaaS. Then copy the factory folder there (the factory folder is a sub folder of PaaS).

I’ve created a jBoss/Seam project containing : a webclient (for presentation logic of my application), a separated ejb folder (for business logique of my application), an ear to contain the projects.

Unzip this file mycompany.zip into the PaaS folder (mycompany should be asub folder of PaaS).

This project is based on MySql as RDBMS. You do not need to install it to make this sample working as this sample does not include any access to the database. bitewise, it will requires the jdbc driver. Here is the jdbc driver I used for MySql 5.1.6. I did not handle to include it in the factory, so you have to copy it into the lib folder of the jBoss deployment (factory > jboss-4.2.2.GA > server > default > lib).

Execute short cut that is in factory folder, it should launch a command prompt. Go in mycompany folder and execute folowing command line:

mvn clean install

Use Eclipse as IDE

Execute folowing command line:

mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavaDosc=true

Execute eclipse.bat that will launch eclipse with the right workspace. I then suggest you to declare the jBoss server.

Now import projects that are in mycompany folder. Deploy it and check it works.

Deployment

Go in platform folder and execute folowing command line:

mvn jboss:harddeploy

Go in http://localhost:8080/webclient …should be ok !!

Conclusion

There are 3 important points in that sample:

  • usage a factory to bootstrap a new project (I think this is the right direction for a PaaS approch, even if that requires lot more work…this is only a prototype…not more),
  • the maven2 pom.xml files which demonstrate how to separate business logic, presentation…and can be extended easily to host morte than one application,
  • the IDE is nicely included into the picture through maven, and the IDE is NOT the build process.

I will improve it and create a dedicated page on this blog and post updates using regular posts.

If you try it and have any question or see any problem, feel free to add a comment.

Apr 23

…is a valid option to write a full software entreprise stack?

Even if JBoss is not listed in my CV, I had recently a looked at it to check its capabilities as of environemtn for a full software entreprise stack (I may update my CV now even if we do not use it…but I made some prototyping with it and have a clear view of its capabilities).

First, what we need?

  • container for decoupled applications
  • persistance
  • UI (web 2.0 would be a plus)
  • engines as workflow and scripting
  • scallable
  • …and more

Back to some fundamentals…

I had AOP

AOP that SoC ?

Beyond AOP…

I had a AOP

Their are 2 ortogonal (I like orthogonality :-) ) concpets: OOP and AOP.

OOP (Object Oriented Programing) is a software technic which is based on the concept of object (attributs and methodes) and inheritency (a car is a vehicul which is a tranportation mode…etc).

AOP (Aspect Oriented Programing) is a software technic ortogonal to OOP which help in “doing repetitive stuff” amongs objects in a simple manner as for example: logging, security, transaction management…etc (always the same examples).

In our case, the AOP is the entry point to get more…

AOP that SoC ?

AOP can also be used to do SoC (that I like too). SoC is Seperation Of Concern. The idea is to deintroduce decoupling between layers and services of the application stack. The trend is to use AOP as a support to do SoC.

Beyond AOP…

AOP as support to do decoupling…

  • some says IoC (Invertion of Control) … technical detail
  • some says DI (Dependency Injection) … I hate this wording
  • through a Service locator … Yes that’s it !

A service locator allows you to access services (transversal as logging, or not as an application) without bothering with wirering (managing dependencies) and creation (resolution).

You just request a specific service to your AOP system.

Back to jBoss…

So what jBoss is proposing?

  • Application Container: jBoss AS
  • Service Locator : jBoss IoC + ejb
  • Web UI : jBoss Seam (+ ajax4Jsf or RichFaces or IcesFaces for the Web 2.0)
  • Workflow engine: jBoss Seam + jBoss jBPM
  • Scripting engine: jBoss Seam + groovy
  • Rule engine: jBoss Seam + drool
  • Wizard engine: jBoss Seam conversation context
  • Persistance: jBoss + JPA + hibernate

It’s preatty amazing how jBoss is exhaustive. I may miss some important features … but that’s a good start.

Apr 15

Following spirit of Jeff Artwood’s post on development fallacies, here are some fallacies around RIA.

Responsiveness
Even if I agree on the fact that one of the main goal for RIA is to provide more responsiveness, this not always the unique path to achieve it. Ajax is the best example to demonstrate that: asynchronous requests provide a lot in the user experience perception for responsiveness.

MDI like support
MDI has been invented (I may be wrong) by Microsoft with its SDI vs. MDI environments. This is basically single vs. multiple document edition. In fact, IMHO, this concept is simply obsolete. First, in general, applications are not more only data access, but also include some processes. Process are even more common than data access, at least through navigation (yes, you could argue that navigation is not really a process). As a very large number of the applications are now available through a web interface, the hyperlinks just made the SDI vs MDI paradigm obsolete. The web app software developers knows about the hell of the back button and “open in new window”. RIA is not the right answer to this…or at least using RIA to solve these problems and implement an MDI interface is simply a mistake. Now, most of the web framework provides solution to these 2 problems (like jBoss seam, and other ajax frameworks).

Sexy interface
Yes, Silver Light or Flew provide support to write sexy interfaces. BTW, I think that a dev team with a talent Web Designer could do better job than some other teams using Flex or Silver Light. this is just a question of tools and requirement. Depending on your requirements, the application may not need the very advanced features of Flex (I will not repeat Silver Light all the time :-) ).

I’m not against at all RIA frameworks, just use them appropriately and be aware of your choice.
The main concern I have is on the language behind frameworks. I remember VP R&D saying (5 years ago) “language does not matter”. If they mean that a good developer should be good at any language…I agree. But if this is in the perspective of building software…I disagree. Your building software for years, you will have to support what you write and make the code evolve. The technologies are evolving a lot, the framework too…what’s remain is the language. Building your entire application in ActionScript is a choice that will prevent you moving to another framework. I prefer build the application on top of Java of C#, and build the presentation layer on top of Flex …but only the presentation layer.

RIA is definitely required and a strong suupport for lot of applications, but if applciations that already have a web interface…be aware of your choices.