Jul 22

The last part of the reedition of my article series about Flex and Spring has been published on the Adobe Developer Connection. This episode is the last one in this improved series so if you haven’t read it yet on my blog, I think the version I gave to ADC is better.

Episode 1
Episode 2
Episode 3

Enjoy!

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • description
  • bodytext
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit
Jul 06

I just released version 1.0-RC2 of MobiMap library. Amongst the features I’ve added are:

  • better icons for screen controls
  • better support for touch screen devices with a new zoom slider
  • all strings are now internationalized in French and English
  • a help screen with all the active shortcuts when you hit 5 numeric key
  • it is now possible to customize all shortcuts programmatically

More information on the official site.

And if you want to test a demo application using MobiMap component, just point your mobile browser to http://mobimap.epseelon.org/mobimap.jad

We’d love to hear your feedback.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • description
  • bodytext
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit
Jun 28

I’m a pure product of the Object-Oriented Programming generation. I’ve experimented several different paradigms when I was in engineering school, including formal programming in B, functional programming in OCaml, logical programming with PROLOG and Eclipse (the programming language, not the IDE). But when I started writing software in high school, it was with TurboPascal and then Delphi. And the main language I’ve been using during my studies was Java.

During all that time, I essentially worked on relatively simple problematics, and my end-of-study project was the first one where I started to look for better ways to handle a more complex environment, namely web applications and web services. The revelation came from AndroMDA, an Open-Source Model-Driven Architecture framework that has been my main specialty and domain of research during the past three years or so. As a professional IT consultant, I’ve used it and promoted it on at least 3 customer projects with rather great success.

But today, I think this time is over. I’ll move on to the next step, my next toy. And if you’ve read my previous entry about the limitations of OOP and its comments, you might guess what it is. I was looking for a better way to tackle today’s software issues and go further in my philosophical goal to make technology useful, and I found it. It’s called Language-Oriented Programming.

If you want to know more about it and wonder why I moved onto this so quickly, here are the articles that hit me as another revelation during the past couple of days:

Now I think I’ll have a much closer look at the practical side of things:

All of my personal projects, including MobiMap, will certainly benefit from this new enlightenment. And I sincerely hope that my day-to-day job will give me the opportunity to work with those concepts…

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • description
  • bodytext
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit
Jun 24

We needed a reusable mapping component for TagSpot development, and we wanted it to be Open Source so that everyone can reuse it and improve it for the general interest. There was no such library available on the environment we’re working on so… we made it!

And here comes MobiMap. MobiMap is a library that offers a reusable and customizable mapping component for several mobile platforms. Today, we’re releasing the first release candidate for version 1.0 of the JavaME version. We’re still working on porting this library to Windows Mobile and iPhone environments, and we’ll release the final version of all three libraries at the same time. Until then, we need feedback from mobile developers and we need help to improve the library.

The project website is on http://mobimap.epseelon.org
Out support forum is on http://groups.google.com/group/mobimap
Our issue tracker is here: http://bugs.epseelon.org
MobiMap’s Subversion repository is here: http://svn.epseelon.org/mobimap-javame

Special Thanks go to…

First I would like to thank developers of Pyx4Me and Microemulator, thanks to which we could develop this library on the Mac.

I would like to thank Romain Guy, Richard Bair and the whole SwingLabs Team: MobiMap component is heavily inspired from JXMapViewer Swing component.

Special thanks also go to Antoine Jacquet, aka Royale, whose blog article about tile providers really helped me a lot in understanding all the tile APIs.

And last but not least, thanks to the whole TagSpot team for their help and support.

Finally, if you want to see what MobiMap can do on your phone, you can type the following URL on your phone: http://mobimap.epseelon.org/mobimap.jad. Or if you’re just too lazy to type this URL and you know how to use a QRCode, you can use the one on the right.

Be careful though, as MobiMap will download quite a bit of map data over your mobile connection so…

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • description
  • bodytext
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit
Jun 22

As far as I can tell, there has been 3 major “revolutions” in software development since it all started:

  1. From binary to assembly language
  2. From assembly language to procedural languages
  3. From procedural languages to Object-Oriented Programming

Of course I’m not even talking about marginal evolutions like functional programming, scripting or formal programming.

And behind a revolution, there’s always a massive “there’s gotta be a better way” feeling. For assembly language people probably thought, “since we’re working with registers and memory addresses and instructions, let’s have readable forms of these concepts rather than just hexadecimal code, obviously we’re going to be more productive”. And then it was probably the same with procedural vs. OOP: Objects, classes, fields and methods were just closer to the kind concepts we were manipulating at some point and we couldn’t just keep tinkering with old paradigms, even on steroids (read structures and things like that).

Now I’m starting to wonder whether we’ve not come to the same point with OOP. At least I have come to this point myself. Objects, packages, components, whatever the granularity I’m still stuck having to tinker with old stuff to realize higher level tasks at some point. Most of the time, I’m not thinking about adding a field or a method in an object, but instead I want to add a property to an entity in my domain, or expose a business operation via a webservice. That’s the kind of tasks that make my day-to-day work. And still, let’s say I want to add a property to an entity in my domain, then I have to add the corresponding field in a class, write a getter and a setter, update the DDL script for the database, add the mapping to the Hibernate mapping file, add a validation directive somewhere… there’s gotta be a better way.

Now I realize that’s the main reason I love AndroMDA so much: because I can do high-level modifications in my UML models and boom! The generator just takes it over from there and updates the code almost everywhere it needs to be, which improves my productivity by a tremendous factor. Others use other tricks for the very same purpose: some use annotations, others turn to active record implementations. But whatever the trick, I feel more and more like it’s a dead-end, like… there’s gotta be a better way.

The closer the tools I’m using are to the concepts I manipulate, the less work I have to do to implement those concepts, the better it is for the whole project:

  • it reduces the probability for errors
  • it improves time-to-market
  • it frees up some time to focus on the real business at hand
  • it gives me a better sense of achievement
  • it dramatically improves return on investment since basically you’re doing more with less

Tonight I had a very interesting conversation with a very smart guy from the AndroMDA team, and it just appeared to me like magic: AndroMDA is just one way to cope with limitations of the underlying object-oriented paradigms, and we have to start thinking about how we can reach the same goals, but in a more native way. We need a brand new paradigm, a new way to build software closer to what we try to achieve everyday at a higher level.

What do you guys think? Have you heard of anything like that? Because I would be really interested in knowing about it. Otherwise, does anyone have any idea about what could be this new paradigm? And do you feel we need it? I’m really interested in your feedback on that one.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • description
  • bodytext
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit
May 31

The tutorial I recently published on this blog about Flex, Spring and BlazeDS was really successful and attracted litterally thousands of people to this site where I had only a few tens of visits a day before that. So first of all, I’d like to thank all the people who gave me feedback and allowed me to improve this article, up to the point where I was contacted by James Ward to republish this article on the Adobe Developer Connection (which should finally happen very soon). This leads me to the main point of this new article.

The reason why I wrote this tutorial is because I am working on a personal project where I need to access a Spring backend with a rich web user interface in Flex. So I invested some time and effort in reading and understanding technologies I didn’t know. And obviously I would have had to invest much more energy into it if I hadn’t been helped by Velo and the amazing work he did on flex-mojos. So of course he invested a lot of time and effort in his Maven plugin too. And the chain can probably be very long. Yet this tutorial is free and under Creative Commons license, and I gave Adobe the right to republish it for free. And someone might be working on a product very similar to the one that forced me to investigate about Flex/Spring/BlazeDS, someone who can now reuse my work for free and maybe get the job done faster than me. Am I taking a risk by sharing this information and letting others benefit from my work without getting any money out of it? Some might think that. But for me, the answer is no.

Continue reading »

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • description
  • bodytext
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit
May 08

I’m more and more convinced that OSGi is going to change the way we develop enterprise applications. In a sense it’s funny because it’s been around for a while in embedded and client-side environment, and it’s only been reaching to us server-side developers for a few months. I think that the fact that the most popular Java component framework, ie Spring, jumped in with Spring OSGi (now Spring Dynamic Modules) has a lot to do with this new awareness. That and the growing interest for modularity and reusability encouraged by the Service-Oriented Architecture fashion. Yes, I agree that SOA has become yet another buzzword encompassing everything and nothing, depending on what software vendors sell to their naive customers. But if customers are ultimately willing to believe false promises, it might be because there is a gap in current technologies. Some see this gap as an opportunity for sales, developers see it as an opportunity for technology improvement. And I really see OSGi as THE technological answer to that and many other problems. Yes, OSGi might be server-side development’s 42!

Now, once you realize the importance OSGi is going to have in the years to come, the question is… sorry, the questions are why, what and how? Of course you could read the entire OSGi specification, but it would be like using a bulldozer to plant a flower. Fortunately for us, there are plenty of articles, blog posts and documents out there to help us understand how to deal with our delicate flower. Here is a possible learning path that will take you through a journey in OSGi world, why it’s useful, what it is, and how you can use it in your own projects.

Why is OSGi interesting?

Kirk Knoernschild wrote two excellent blog posts with sample code that is as simple as it can be and really gives a practical idea of what OSGi is all about.

  • The first one introduces the notion of a service in OSGi
  • The second one shows how you can really decouple the interface and its different implementations and dynamically switch from one implementation to another one
  • What I really like about those articles is that they use no external tools like Maven or Eclipse. Just plain text and Ant to compile. Just one thing that can be useful: you might want to download the latest version of Felix (1.0.4 at the time of this writing) and customize osgi/HelloWorld/config.properties (lines 31 to 34):

    felix.auto.start.1= \
     file:/Library/Apache/felix-1.0.4/bundle/org.apache.felix.shell-1.0.1.jar \
      file:/Library/Apache/felix-1.0.4/bundle/org.apache.felix.shell.tui-1.0.1.jar \
     file:/Library/Apache/felix-1.0.4/bundle/org.apache.felix.bundlerepository-1.0.3.jar
    

    Those are my own modifications because I downloaded Felix and installed it in /Library/Apache/felix-1.0.4 on my Mac. And of course you will have to adapt startfelix.sh (or startfelix.bat) as well:

    java -Dfelix.config.properties=file:./config.properties -jar /Library/Apache/felix-1.0.4/bin/felix.jar
    

    Finally, in the second article, at the time of this writing there is a mistake in the code of the manifest for service2. I’ve left a comment and hopefully Kirk will fix his code in the repository. HelloWorldSpec/service2/META-INF/Manifest.mf should look like this:

    Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: Hello Service Impl 2
    Bundle-SymbolicName: helloserviceimpl2
    Bundle-Version: 1.0.0
    Bundle-Activator: com.extensiblejava.hello.service2.impl.HelloServiceImpl
    Import-Package: org.osgi.framework, com.extensiblejava.hello.service
    

    Then, following those two articles, Kirk modified HelloWorldSpec to integrate Spring Dynamic Modules and show what it brings to the table. More specifically, you can see that Spring Dynamic Modules makes it possible to externalize service registration and consumption in Spring configuration files and have service and client classes as simple POJO’s.

    That’s it for the “why?”. I guess you understand why it can be interesting to use OSGi on the server-side by now. In the next article, I’ll try to give you a few links to identify what elements can make up your OSGi development environment.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • description
  • bodytext
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit
May 01

3 months ago, the day SpringSource announced their acquisition of Covalent, the company behind Tomcat, I knew they were up to something. I even talked about it with Andrew Glover for JavaWorld. And now it’s real: SpringSource has just announced SpringSource Application Platform.

First off, a few links around this announcement:

Now this is very exciting. That’s the kind of inspiring technologies that make me think of tens of ideas for new projects, new tools that were just impossible before and that could now become reality. Adobe Flex had the same effect of unleashing my software artist imagination. Now I’m starting to think about combining the user experience of Flex applications on top of the ease of management, deployment and extensibility of OSGi with SSAP. Jeez, we’re living an incredible period!

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • description
  • bodytext
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit
Apr 20

Thanks to Brian E. Fox, I managed to avoid duplication of Flex remoting configuration files in this project. It requires a bit of additional configuration and I hope that Maven will soon provide a simpler way to do this simple resource inheritance thing. But in the meantime, this one will work.

I’m going to update my four-article series to include those modifications, but for those of you who have already gone through it before the update, here are the exact modifications you need to make to the project you got at the end of Part 4.
Continue reading »

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • description
  • bodytext
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit
Apr 15

[UPDATE] This article series has been reedited on the Adobe Developer Connection. For more information, see this post.

In the previous articles in this series, we did the boring stuff of setting up Spring, Hibernate and MySQL on a sample todo list server on one side, and we wrote a small useless Flex UI on the other side. In this article, we’re going to write the final UI and connect it with the Spring backend using BlazeDS. Let’s go!
Continue reading »

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • description
  • bodytext
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit
Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported
Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported