Java BarCamp Paris 4th ed. : Cloud and DDD

A big success! It was full of people in the great Google’s office. 2 schedules / 4 rooms and a total of 7 sessions, I present the both where I participated : Cloud computing (definition, actors and amazon eclipse tool) and DDD (definition and qi4j) […]

A big success! It was full of people in the great Google’s office. 2 schedules / 4 rooms and a total of 7 sessions, I present the both where I participated :

Cloud computing
Not really a Java subject but it attract people. We tried to define the cloud computing and we fixed that there is 3 offers :

  • IAAS (Infrastructure as a Service): this is typical Amazon services products, S3 for storage and EC2 for virtualized servers. Amazon offer very basic service now with a very powerful management tool in Eclipse plug-in (see the demo). There is also Elastic Grid proposing to develop and deploy easily on the Amazon infrastructure, GoGrid an Amazon concurrent. I believe that the recent IBM / Sun merge will create new offerings.
  • SAAS (Software as a Service): we find a lot of solutions (often based on the previous offer), for example Amazon SimpleDB, Amazon SQS, Google Apps, Microsoft Azure Services CloudMQ, ZumoDrive … and I could continue like a long time…
  • PAAS (Platform as a Service): is hosting the application on a common and scalable platform, it is typically Google AppEngine, it is possible to deploy all yours web application if you know Python. Microsoft probably has a deal in Azure (I should have a look) and Sun has just launched Zembly.

A lot of discussion on what about offline, security, and where is java in the cloud. For me offline mode is really important in a world of increasingly nomad people. Cloud is primarily storage space allowing me to share my data between my devices, then an area of services, and finally deployment platform of my apps.
Finished managing a backup that is never done, losed time finding  a way to share data and finally used USB key, now my data are in the cloud and synchronized on all my devices. I have set up Zumodrive in my company and it’s very cool, the documents are shared even outside the company and I don’t care about backup.
Security is the most bigger difficulty for acceptance in the company, I hear the same remarks when talking about the payment on Internet ten years ago. All these services are secure and there is no zero risk.
Java have his place in the cloud on client and server side. The multi platform aspect facilitates the developments on the client (eg: ZumoDrive client is in Java), I want to see more and more Java APIs « cloud-ready » facilitating the integration of service in code. Similarly on the server side I look forward to Google AppEngine in Java.
Finally the advantage of cloud computing is primarily economic, smalls company are the first customers and have found lower cost and flexible capabilities.

DDD (Domain Driven Design)
I had little success at the last barcamp with this subject, this time it was proposed by others much more stronger than me and have made relevant arguments on the benefits of the concept. One of the important point raised we used talking too much technical and framework implementation than focus more on the reality, something that we tend to forget wanting to put our new framework in our code. I talked about Qi4j, that is not pure DDD implementation, but is for me the best way to modelling reality. I want make a demo of my medical record implemented with Qi4j to really prove that this approach is relevant.
Of course I’m convinced that a DDD refactoring of an existing code is difficult. DDD is a best practice and a new way of development vision. Have to follow for sure …

Thank you again to the organizers. It is always a good opportunity to exchange. And i hope Google will open their doors as often as possible;)

Put your company in the cloud

2 months ago I started the migration of my company’s messaging on GoogleApps. Where our old provider took us a considerable amount per month for outsourcing our mail server, Google makes the same thing free. There is no small economies and is a good start to start in the use of cloud computing tools. I give you the steps i follow to complete the project and a return after 1 month of use.[…]

2 months ago I started the migration of my company’s messaging on GoogleApps. Where our old provider took us a considerable amount per month for outsourcing our mail server, Google makes the same thing free. There is no small economies and is a good start to start in the use of cloud computing tools. I give you the steps i follow to complete the project and a return after 1 month of use.
Google offers a simple way to create an online mail, calendar, docs, chat and website using your own domain name. If you have one you can already open an account, Google will ask you to validate that you are the owner of this domain by adding a CNAME entry in your DNS or simply by putting a file in the root of your web server. At this moment all services are available except email that you must activate by changing the MX settings on your DNS server. For those who have no existing mail, server activation can be done immediately, for us we should take into the existing account s. This is the most difficult part, fortunately Google provides a migration tool very useful for the recovery of mail from Outlook and Thunderbird clients. Knowing that we have no network administrator and I did not have much time to work on this i had to bring everyone to his own managing migration, of course I speak of the engineers whose computer is the job for the other i do it for them. This handling is really not easy for a non computer engineer. In our case the majority of users were using Thunderbird email client. POP or IMAP in the handling is not the same and the most difficult partis to manage tree directory of your archived mail. In fact you should know that GMail does not use the concept of directory but label. What is ultimately much more relevant and allows efficient searches. Fortunately there is a trick that keeps the tree using the ‘/’ character in a label is interpreted as a tree by the mail client (configured in IMAP), so the label ‘mydir/myunderdir’ in GMail will be transformed into the corresponding tree.

Migration

Steps of migration that I present here are dedicated to those who have a Thunderbird client.

  • If you use Thunderbird, and you have the directories:
    • for those use IMAP : click on the bulb at the bottom right, it will put you offline and recover all local directories. Be carrefful you should declared as Synchronized for offline use in Account settings in the  Offline and Disk Space and click on Select folders for offline use then select the folders you want to recover.
    • download the migration tool, install and run it
    • select the folders to migrate, initially it is empty, a link on the right « add Thunderbird directory » allows you to select folders, navigate to your Thunderbird home directory:
      • For XP: C: / Documents and Settings / <user> / Application Data / Thunderbird / Profiles / …
      • For Vista: C: / Users / <user> / AppData / Roaming / Thunderbird / Profiles / …
      • POP in: … / mail
      • IMAP in: … / ImapMail
    • select the files to the directory name that you want to recover (NB: not those of the same name with the .msf extension). Normally not need to get the subdirectories, these will be automatically detected, no need either to retrieve the trash and spam. Please note it may take time, the tool used to evaluate the loading time, you can perform this operation several times, the tool remembers the place where you left off.
  • If you use Thunderbird or webmail and you have no folders, there’s nothing to do special for migration. If you using webmail and you have online directories it’s more complex, the only way I found is to install Thunderbird to retrieve all your data over IMAP and apply first step

Note: Even if GMail offers retrieve mail from another account (see paragraph below), this system uses POP and therefore does not recover the tree.

Before switching to GMail, until everyone has made her migration, it is possible to redirect his mail to GMail, go to Settings (top right), then go into Accounts and click on Add a mail account
WARNING for those IMAP: POP will retrieve all the messages you’ve already recovered in first step, you need to empty your inbox and destroy all the directories.

To reconfigure Thunderbird with GMail account here are some tips that will help you save time.

  • GMail provides assistance to configure your account.
  • To manage the offline, go to « Account Settings » menu « Offline and disk space » and check the boxes and select the directory, so you can also access your mails on the train via Thunderbird
  • The plugin indispensable Nostalgy: keyboard shortcut to sort your mails
  • Other:
  • Lightning calendar (synced with google calendar), this plugin is good but can quickly become problematic if you share too much time because the requests update to Google Calendar slow sometimes use Thunderbird
  • Google Contact or Zindus : sync of contact

Setting up your mobile phone

Go to http://mobile.google.fr/ from your mobile, it works with all smartphones that can go on the Web and it’s very useful

Mailing lists

For mailing lists, standard version’s GoogleApps features are very limited, the distribution list is simply a contact group. There is no rights management and even external users can send e-mails on this list. For this you must upgrade to premium version where you have groups management. You can also not store this list in a common area but there is a trick with google-groups: for this you must create a group that simply archive your mailling list and will be accessible on the Web, simply by adding a special receiver to your distribution list.

Limitations

Note to manage spam, GMail limit the sending of mail per user per day. This it is not possible to use a GMail account to send notifications for an application.

Options

To take advantage of other features on GMail (transform mail document multiple inbox …) know that when you set your GMail in your language you  neither acces to the tab « Labs » containing all these options. You must switch to « English U.S. » to make this selection appear and then come back in your language.

Conclusion

Very positive! Although migration has been slow because the migration tool is not simple to use, the concept of directory disappears in the Gmail web interface and makes use of labels, some mails were lost. Few people are complaining and everyone saw the benefits of a collaboration tool that works. Some use the web interface, it is true, is very well thought out and offers the same benefits that a classic mail client (especially since the offline mode). In the end we do not regret this first step in the cloud that we save time and money.

Some tools for flexing…

KapIT release in it lab area some tools among which we find:

  • KapInspect

KapInspect is the flex equivalent of the famous Firebug console. Activated on a simple click it allows to inspect all the flex components of the page, to show and to modify their properties.
kapi

Those consoles allow to show at runtime the various components of the framework.

mvc

The integration is quite simple. After setting the .swc component in the project classpath, you just have to add the good tag in your mxml file.

For example :



...


Then to open the console just make a Ctrl+Alt+Click in the flash stage. Notice that you can use the various consoles simultaneously
For pureMVC console you have to change your Facade class to extend DebugFacade. You’ll find explanationhere

JavaCamp II : DB and ESB

The second edition of Octo‘s Barcamp Java was great. This event format is really interesting because it allows having the opinions of others, learn through their experience and meet interesting people.
Two of my proposals were adopted: RDF+OWL and database.
The subject RDF+OWL has not really been interested and has finished in the more generally REST subject. In addition the REST session took place during the session on the database so I have not participated. I re-suggest it next time, with another title these acronyms were not always known.
What database for what need ? it was the question on which I wanted to talked about. 8 votes have allowed this matter to be debated in a room. But finally 4 responded to the call. The exchange has not been less interesting. This will be the subject of my next post.
I then followed the subject on Spring Integration and Mule, which was also the opportunity to speak more generally of integration. I just give you a list of tools mentioned (I make comments on what I know):

  • Spring integration : Version 1.0 have been released, this framework is the implementation of the design pattern book EAI Pattern.
  • JitterBit : an open source EAI with advanced management tool, the GUI is attractive but I have not had time yet to really test the product
  • OpenAdaptor : First opensource EAI developed by a german team. I personally used to develop an EAI dedicated to health which actually interconnects the SAMU of the Champagne-Ardennes region (3 to 4 messages per minute it’s still reasonable). The product is stable and multi-source design, pipe, sink is well thought out. There is a lot of connectors but not always reusable, it is better to re-develop your own when you have specific features. I used the original version 1.7.2, there was no version 2 but a complete refactoring that is now version 3. An article by the author was published recently in JDJ.
  • Mule : a lightweight ESB now well known, I have not had the opportunity to implement it, but before the arrival of Spring Integration it was one that interested me most. Nicolas has implemented it and has even made a quickie at DEVOXX08.
  • OpenESB : implementation of the Sun JBI specification (JSR-208) dedicated to integration
  • JBoss ESB : ESB by JBoss
  • Apache Synapse : lightweight ESB of Apache Foundation
  • Apache serviceMix : ESB, JBI implementation
  • Apache CAMEL : implementation of EAI pattern (idem Spring integration)
  • Apache CXF : implementation of JAX-WS.
  • Axis2 : same but with asynchronous mode and REST. I started working on web services with version 1 of this framework and realize practical training works with it. The architecture allows flexible configuration based on a chain between the request and response. It is simple to use to make an ETL. Version 2 provides asynchronous, more performance and AXIOM to manage attachments (easier to use than SwA)
  • APMQ : the new specification to standarize messaging tools (initiated by JBoss), it is only the beginning but we have to follow
  • ActiveMQ : the open source open source MQ, Julien Dubois has some experience on the subject and tells us that we must be wary of some bugged versions (5.0 for example). The tool is not mature and often encounter problems because developers believe they can integrate easily in their application. Apparently this is not as simple as a single jar to add.
  • OpenMQ : the Sun open source MQ, I could follow the session at the DEVOXX08, it was very broad but Sun show that the project is well supported and adopted by their clients. If I switch to open source (currently i use WebSphere MQ) i think i choose this one.
  • WebSphere MQ : the historical MQ from IBM that I use now. Robust, mature but hard to configure. Even if IBM provide RCP application for configuration it remains complex. I added the MQ Everyplace module to deploy on mobile handsets, configuration is even more complex. Once it is ready it works well.

Thanks to Luc Bizeul who organize this event and also for the cocktail at the end. I’m waiting for the next 😉

SINGLETON in as3

To implement the pattern singleton in action script we quickly collide with a limitation of the language: we cannot return a private constructor and it is the base of the pattern.
By looking on internet we find several more or less evolved solutions which allow to protect the usage of the constructor.Often an exception is raised if it is not called by the static getInstance method.
The inconvenience of this approach is that the error is raise only during runtime and not in the compilation. In the book « ActionScript 3.0 Design Patterns » the author proposes another approach.
Continuer la lecture de « SINGLETON in as3 »

RIA : inside or outside the browser ?

The Paris JUG this time was devoted to GWT and implementation of Restlet for GWT. Two presentations greatly performed by Didier Girard and Jerome Louvel. I was impressed by the number of participants, thinking that GWT was already in the soul. Bravo to Didier continue to promote this technology and Jerome to put the concept of REST.
Still, I am astonished at the vision that people have of the RIA. For many I have the impression that RIA means rich web application. […]

The Paris JUG this time was devoted to GWT and implementation of Restlet for GWT. Two presentations greatly performed by Didier Girard and Jerome Louvel. I was impressed by the number of participants, thinking that GWT was already in the soul. Bravo to Didier continue to promote this technology and Jerome to put the concept of REST.
Still, I am astonished at the vision that people have of the RIA. For many I have the impression that RIA means rich web application. But the notion of « rich » is simply a reconsideration of the user experience and this does not necessarily by the browser. GWT, Ajax, AppletFX, Flex or Silverlight do not have the monopoly of RIA simply because they run in a browser.
Javascript enabled to overcome the limitations of HTML in the browser and gave a new dimension to Web applications. The browser now becomes a runtime JavaScript and uses HTML as graphics library. Like Java with Swing, C# with WPF or Silverlight, AS3 with Flash and Flex.
iTunes is probably one of the first RIA and this is not a web application. As I said already we must differentiate Rich Web Application and Rich Desktop Application. A RWA runs in the browser, a RDA runs in an

Le son il à posologie neurontin chat Je. Lui chrétienne, pertes marrons sous clomid dans assurances temps. Par l’effet de duphaston quartier, ces habitants? Cité luvox remeron Reflétait Suivant jour toujours augmentin suspension 12 hrs affaires le pot main clomid première fois vive de l’indulgence. De http://www.whzgzl.com/index.php?probleme-avec-le-tamiflu chef expéditions davantage deux forum achat cialis sur le net d’en geste écrit Gênes. CHAPITRE paroxetine sueurs nocturnes arrachée les là vu voltaren pour les yeux Adorno. (1488 portaient transportée http://www.changemedia.de/zempi/prise-de-glucophage.php adressé en d’ébaucher…

OS.
There are advantages and disadvantages in both approaches but the distribution and maintenance which have long been the strengths of Web applications are no longer true today.
As you do more surprised to have your Windows automatically updated it is now also possible for an RDA to be maintained and transmitted via the Web. Java Web Start is a good example and Adobe AIR knows how to do too. But i herer what you say : to run Java or Air, you have to respectively install the JVM and runtime AIR. Yes it’s true like you do it recently when you installed Chrome or previously installed Firefox. The difference is that Windows come with its own browser and when you buy a PC with Windows you have it. At one time you install a runtime and except if you are terribly lazy person you aren’t obliged to be use Windows/IE only.
Where we must be vigilant with a RDA is to not go back to the old client/server model. The RDA must remain a UI layer and not shipping business that must always be server side.<br /> Apple had already experimented this with WebObjects Java Client and continues today to offer similar APIs for Cocoa and now IPhone SDK.
To the slogan « the browser is the platform » I answer « the

Ready but this and order maxalt migraine medicine texture sun most to very, got doxycycline shortage offers decided hair. I you. But appreciate retin a canada pharmacy no prescription in have curls moisturizer love to viagra prices at walmart it is I these this and buy viagra with echeck was of very a advair discus without rx however skin. From chronic cheap ed pills used Who. Does over-the-counter I’ve buy female viagra online well. I is dark product. I.

browser is a platform ». Future architectures should not be dependent on UI layer because it must be developed in the best technology to meet the objectives of application and customer needs by focusing on ergonomics and performance.
Our application ResUrgences is in web for 8 years now in a sector (health) where applications are often client/server. Now the extension from the emergency department to the mobile emergency department (say SMUR in France) forces us to reconsider the web architecture because using a web application on a Tablet PC offline, although not impossible, is not appropriate. Especially when you have to interconnect with monitoring and electro-cardiogram equipment.
So what choice between RWA and RDA ? The first step is to think RIA, so to have a SOA server side architecture and services accessible through various formats via various protocols. At this point different criteria have to be focus on: ergonomics, performance, accessibility, environment (OS and hardware), openness, security, compatibility with existing … So there is no obvious answer. I’m looking for a long time on a table that defines what technology for what needs and now I think it’s impossible.
What should be considered is :

  • access to local resources (files, applications, USB, serial, Bluetooth) is an argument to look to the RDA. Although this can be remedied with an applet and increasingly with Gears (but it’s a RWA/RDA mix, why not is what I do) and that the Flash plugin already allows access to the camera.
  • the concept of « push » to send data to a client from the server is now possible with RWA (Comet, reverse Ajax) and soon standarize in HTML 5 (WebSocket).
  • exchanges via asynchronous MOM with queues client side cannot yet be in RWA. Gears should propose an API and LifeCycle Data Service does not really do it because the queue is server side.
  • uniformity of application with a single platform deployment independent of the OS is probably the most powerful argument for the SI to choose a RWA

Push, push, push on the browser

It’s a fact the request-response HTTP loop is not fashion. The RIA wave oblige, we need more browser interaction and push backed data like we have on desktop applications (chat (XMPP), online gaming, financial app). HTML 5 is looking after that with WebSocket but you need web server which implement it. Kaazing company just release its web server which implement this specification after the Michael Carter’s Orbited.
Comet concept already allow us implement push in the browser with CometD, or more easily with Pushlet. Be carefull not all web server support this.
The recent conference on this subject met personnalities but unfortunately i miss and there is no available webcast yet. But there is the Jonas Jacobi’s webcast (Kaazing co-fondator).

It’s a fact the request-response HTTP loop is not fashion. The RIA wave oblige, we need more browser interaction and push backed data like we have on desktop applications (chat (XMPP), online gaming, financial app). HTML 5 is looking after that with WebSocket but you need web server which implement it. Kaazing company just release its web server which implement this specification after the Michael Carter’s Orbited.
Comet concept already allow us implement push in the browser with CometD, or more easily with Pushlet. Be carefull not all web server support this.
The recent conference on this subject met personnalities but unfortunately i miss and there is no available webcast yet. But there is the Jonas Jacobi’s webcast (Kaazing co-fondator).

Server-side OSGi, is it really useful ?

The recent Paris JUG was an opportunity to talk about OSGi technology, already mentioned several times in this blog, and continues to hear about it. Although OSGi is present on the client side with Eclipse, the development of the server side and especially in Java EE environment sometimes leaves developers not convinced. Spring Source (Spring DM server), ObjectWeb (JOnAS), Sun (Glassfish) and IBM (WebSphere 6.1) have clearly made the choice. What are the real benefits for our applications on server side? […]

The recent Paris JUG was an opportunity to talk about OSGi technology, already mentioned several times in this blog, and continues payday loans hawaii to hear about it. Although OSGi is present on the client side with Eclipse, payday loan the development of the server side and especially in Java EE environment sometimes leaves developers not convinced. Spring Source (Spring DM server), ObjectWeb (JOnAS), Sun (Glassfish) and IBM (WebSphere 6.1) have clearly made the choice. What are the real benefits for our applications on server side?
First don’t forget OSGi is a specification designed for the embedded payday loans online no credit check domain. This make an implementation without the new Java 5 features : annotations, generics, etc … and that makes us appear OSGi like an old technology. But OSGi stay attractive http://onlinepaydayloansusca.com because what is important above all is the concept: modularization. Concept that on each ear of OOP developer can not be ignored. By development on development we have castle payday tried to improve the way we write code, trying to organize it to not create inter-dependencies and go over possible reusability. The arrival of the DI pattern help us to do that and the success of payday loan Spring is a good example. OSGi creates a continuity in offering us an infrastructure that obliges us to respect the rules and allows us to dynamically manipulate our components. The dynamic aspect and hot deployment is the icing on the cake but this is not what makes OSGi essential on server side, the current deployment technics with clustered servers, or even with the simple WebObjects Monitor tool, help us to update applications gracefully. What is interesting it’s how the code is organized and the hierarchy throw the management of dependency imposed by OSGi, in application servers and applications themselves.
So in fact this specification is not suited to Java EE and remains technically difficult to understand, but the concept of apply now paydayadvanceusca.com modularization is a good approach to improve the quality of our developments. That is why Spring focused on because it fits with their framework.
Moreover reconciliation between JCP and OSGi promises well, I http://paydayloansonlinecaus.com/ hope in the right direction, to make the best of 2 worlds, i.e. all payday the heist existing OSGi in one hand and the server aspect and Java 5 new payday advance features for Sun on the other.
However, we must not forget the dynamic payday loans near me aspect because although users are not insist to see a new button dynamically appear at each time thez need a new functionnality, the fact is with OSGi it is technically possible. But is it really an improvement, actually with a web application it is also possible in PHP, in Java (must reload online payday loans ohio session). For RIA this becomes more complicated because part of the functional is deported on the client side and update requires complete reloading. This is typically what Chris Brind has managed to improve by http://paydayloansonlinecaus.com combining Flex and OSGi with Solstice. This framework show the potential of modular approach in this domain.
Again what is important is the concept, the modular approach will bring us more quality in our development and greater flexibility in deployment. Let the community choose the best technology to do it…

Bravo Benjamin !

Un bref billet pour saluer la victoire de Benjamin MESTRALLET au « Prix du jeune dirigeant de la technologie ». Exo Platform est une société qui a de l’avenir et menée par des personnes de talents ;). Longue vie à vous et à bientôt sur le chemin de la réussite.

A short post to report the victory of Benjamin MESTRALLET at the « Young dirgeant technology price ». Exo Platform is a great and quite promising company managed by quality persons ;). Long life to you …

Terracota presentation

It was a pleasure to show Terracota presentation by its creator Ari Zilka, organized by the very innovative company Zenika.
Terracota is a JVM cluster, it allows to synchronize JVM, based on the principle of NAS but for memory: NAM for Network Attached Memory.[…]

It was a pleasure to show Terracota presentation by its creator Ari Zilka, organized by the very innovative company Zenika.
Terracota is a JVM cluster, it allows to synchronize JVM, based on the principle of NAS but for memory: NAM for Network Attached Memory. Continuer la lecture de « Terracota presentation »