Showing posts with label erik jan. Show all posts
Showing posts with label erik jan. Show all posts

Thursday, June 24, 2010

JSF composite component

On my latest project we used RichFaces as a component library. Our client didn't like to fill out the time with the RichFaces calendar. They wanted two combo boxes to fill out the time. I don't think this is the most user friendly way to solve picking a time (I like this timepicker) but our customer is king.

I thought that there would be someone on the internet who already created a component like that, but I could not find any so I made my own. JSF 2 will introduce a new component creation method. It will be simpler to create components and you do not have to write java code to make them work. But until we have JSF 2 available on all major application servers we will have to program some java for our components to work.

The plan I had for creating it was simple enough just take two HtmlSelectOneMenu components and fill them with default options.

So I ended with something like this:


private void createChildComponents(FacesContext context) {
Application application = context.getApplication();
hourInput = (HtmlSelectOneMenu) application.createComponent(HtmlSelectOneMenu.COMPONENT_TYPE);
minuteInput = (HtmlSelectOneMenu) application.createComponent(HtmlSelectOneMenu.COMPONENT_TYPE);
List<UIComponent> children = getChildren();
children.add(hourInput);
HtmlOutputText sparator = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
sparator.setValue(":");
children.add(sparator);
children.add(minuteInput);

UISelectItems hourItems = createSelectItems(application, 24, 1);
hourInput.getChildren().add(hourItems);

UISelectItems minuteItems = createSelectItems(application, 60, 5);
minuteInput.getChildren().add(minuteItems);
delegateProperties();
}

private UISelectItems createSelectItems(Application application, int number, int step) throws FacesException {
UISelectItems selectItems = (UISelectItems) application.createComponent(UISelectItems.COMPONENT_TYPE);
List<SelectItem> items = new ArrayList<SelectItem>();
for (int i = 0; i < number; i += step) {
items.add(new SelectItem(StringUtils.leftPad(String.valueOf(i), 2, "0")));
}
selectItems.setValue(items);
return selectItems;
}


Rendering this was not hard but to extract the selected value and store the submitted value back into the value binding, that was not so easy. First I tried to override the validate method but that didn't "sound" right, doing it in the updateModel was much better.

The only weird thing I was still facing was that, sometimes the value from the hour and minute components were converted to Integer but sometimes they where not. So I ended up with this construction to ensure that they were always Integer.


@Override
public void updateModel(FacesContext context) {
super.updateModel(context);

hourInput.validate(context);
minuteInput.validate(context);

ValueExpression valueExpression = getValueExpression("value");
Date value = (Date) valueExpression.getValue(context.getELContext());
if (value != null && hourInput.getValue() != null
&& minuteInput.getValue() != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(value);
Integer hour = Integer.valueOf(hourInput.getValue().toString());
calendar.set(Calendar.HOUR_OF_DAY, hour);
Integer minute = Integer.valueOf((minuteInput.getValue().toString()));
calendar.set(Calendar.MINUTE, minute);

valueExpression.setValue(context.getELContext(), calendar.getTime());
}
}


Here I'm using the Java Date API. That of course is extremely sadistic so we could change it to use joda-time.

Now to use it we first register it as a component in components.taglib.xml

<facelet-taglib>
<namespace>http://ctp-consulting.com/components</namespace>
<!--
usage: <ctp:timepicker value="date"/>
-->
<tag>
<tag-name>timepicker</tag-name>
<component>
<component-type>com.ctp.web.components.Timepicker</component-type>
</component>
</tag>


Then make sure you have the components.taglib.xml registered in you're web.xml

<context-param>
<param-name>facelets.LIBRARIES</param-name>
<param-value>/WEB-INF/tags/components.taglib.xml;</param-value>
</context-param>

And here an example of use, fist add the namespace on the top of you're page:

xmlns:ctp="http://ctp-consulting.com/components"

Then in our page you can do something like:

<ctp:timepicker value="#{catering.deliveryTime}"/>

Maybe this is not the best solution, if you have comments or tips, feel free drop them directly on this post. I'm interested in what you have to say!

Saturday, June 5, 2010

Jazoon 2010

As a Java developer you'll need to stay on-top of what is new and noteworthy. A great way to do this is to go to a conference, because this is an interactive way to learn about new stuff. Together with Douglas,  I was attending Jazoon, an international conference held in Zurich, it is my first time here. Like Devoxx it's also held in a movie theater. Although Jazoon is also an international conference there are of course a lot of Swiss here and it's a little smaller. But that just means I have more change to win an iPad :D (didn't happen, too bad).

After the keynote the first presentation I attend is about REST. Stefan Tilkov is the presenter and he does a nice job bashing web frameworks like JSF that do not do REST at all. He has a point, the web is about URI (Unified Resource Indicator) and a document should be identified with that. That has always been the way of the web. And "modern" web application frameworks have a tendency not to change the URI for every resource and use only one HTTP method (e.g. POST) instead of all 7 of them. Stefan calls this abusing the web, or even desktop applications in disguise. I must agree to what he has to say about a lot of things. Search engines like Google work because of this and even if we are writing applications that are used inside intranets they are still web applications and they should be able to work accordingly. I'll need to investigate what people developing JSF thoughts are about this.

Next up Blueprint by Costin Leau, he works for SpringSource. I personally have not used Spring since  they were hesitant to adopt annotations and was rather using JBoss Seam ever since. But as we have customers interested in doing something with OSGi it will be interesting to see how they eased the way to develop something for OSGi. When I heard about Spring the first time, I was amazed and wondered why I didn't think of that. Now I have the same feeling with OSGi, it can be a lot simpler when you use IoC in combination with it. Blueprint is only a spec and there are 2 implementations. I really need to take a look at it because it looks really helpful.


On Thursday we had a nice Java roundtable to discuss all the news.
Erik was all excited! :D


On day 2 the keynote is from Ken Schwaber he is one of the founders of SCRUM. In his presentation he made the point that a lot of people who think they are doing scrum are actually not: Because they don't finish their user stories. This is due to the fact that we don't include enough when we say it's done. When is a user story done? When user acceptance testing has taken place? Load test integration test and refactoring? When things like these are kept to the very end of the project a lot of work still remains to be done when the project should have been finished. According to Ken this work will be exponentially more then when you do it after each sprint. All in all it was quite a mood breaker because Ken tried to emphasize that a lot of software projects still fail and that we should be professional and fix that by changing what we call done.

Peter Lubers (he must be Dutch :D ) had a talk about HTML 5 Websockets. I've heard about a couple of things that are going to be in the HTML 5 spec but I did not know about this! And this is very exiting:  there are a lot of projects that have tried to solve the problem how to push data to a web browser client. All of the implementations are not ideal. There are a couple of polling solutions, but the overhead that you get when making a request, on average, is about 800k. That does not look like much but if you want to scale your applications it is a lot. The way Websockets work is to "upgrade" your standard HTTP  connection to a socket where you can then send and receive data over. He showed a working example of this with Google Chrome the only browser that supports this right now- At the end of the presentation he said he talked to one of the technical guys from Microsoft and he has a strong feeling it will not be in IE9, how nice is that (the IE6 story all over).

The two talks I went to after lunch were both about alternative languages on the JVM namely Groovy and Scala. And they we're both about Distributed Computing. I thought it was really exciting, all we need now is a customer with a large set of data and a need to compute something with. That is the only problem with distributed computing and with cloud computing even more so, it needs lot of data to work with. Otherwise there is no need to use it. This is even more true when you already use web applications. They scale very easy because they use the request response model. Every request could be handled by a separate thread or instance in a cluster. So interesting things are happening here and a lot of development is going into solutions based on distributed computing and cloud computing.


Douglas and Daniel trying to get more infos about Web Sockets...
Well...isn't that a game on that iPad?


Last Day

On the last day of the conference the keynote was about Gaia the satellite that is going to map a lot of stars in our milky way. It was interesting to see that they use Java to analyse the huge amount of data. And that there are still debates about Java being fast enough. Come on people it's 2010 Java is blazing fast!!

The whole last day was more or less about testing. There were a lot of talks in this area and only one that I would like to mention here. There was a way to short talk about Arquillian. I don't think that the presenters wanted to have a small slot but I guess they we're forced to use a small one. Arquillian is a cool way to test EJBs inside the container. The project is brand new and they still need to add support for a couple of containers. But it's looking really promising. I got a cool shirt at their presentation so I'll definitely keep an eye on this project :-).

Thoughts

All in all Jazoon was great to see and to be at. But if I would have to choose between Jazoon or Devoxx  I'd rather go for Devoxx. The idea I get is that Jazoon is younger than Devoxx and still has to proof itself as important and unique besides Devoxx. Of course Jazoon is better organized, everybody knows that people from Belgium are chaotic ( :D sorry guys), but that is not enough of course. At Jazoon I don't get yet the atmosphere you get from a Devoxx, this hold true for the size and quality of speakers too.

But I do have a lot of new things I have to look at! So all in all it was a positive experience. I hope Jazoon gets more popularity so it will attract more people from around the world.

Thursday, April 29, 2010

Java People Spotlight: Erik Jan de Wit

After a rather long break, we are back with interesting articles in the pipeline, one of them released yesterday containing a nice video tutorial!
 

So today we want to present a rather new member in the CTP Java gang: Erik Jan de Wit, dutch Java power at its best!
Erik has joined Cambridge Technology Partners in February 2009. His technical excellence and social skills are true assets for our projects as well as for our Java oriented internal activities. Not without reasons, "@EJD" became an alias among CTP Java dudes to shortcut the fact that Erik will get "injected" and involved on projects, tasks...:-)
So let's check out the answers by Erik then!


Java Competence Role:
Senior Developer [aka Singing Scrum Master]
My Master Kung-Fu Skills
:
Intergate new technology into existing projects fast
I'd be excited to get my hands dirty on:
Scala, ESB, JavaFX, Cloud-Computing and the new EJD... sorry EJB Criteria... well it's anyway JPA Criteria API :-)

Q&A
Q: Hi Erik, how would your message look like if you would have to tell it via Twitter what you are currently doing?
A: Be a great Scrum master on this time challenged project

Q: What was the greatest piece of code you have ever written so far?
A: A screen scraper that enabled to integrate an external site into another site while changing all links back to our site including form actions.
Q: Really? I'm sure dutch scrum masters did something more fancy on projects than this....:-)
A: Well yeah, you're right: So on my kenai.com account I published an open-source framework which is basically a reverse regular expression generator that is used in the testdata project to generate test data that adheres to a specific regular expression. The testdata framework inspects your domain model and creates data for your domain. So if you use hibernate validator or bean validation annotations in your domain it will use the regular expression on the field to generate data that is valid. So that's what I used later on projects.
Q: Awesome!
A:
And!! ... there is also a Scala version of it, based on the StandardTokenParsers
Q: Now we're talking :-)

Q: What is the best quote you have ever heard about programming?
A: All my peers are trying to talk dutch... very nice!

Q: What is the best quote you have heard from our managers?
A: I had to review Java code written in Turkish and my manager said: "It is still Java, it is not Rocket Science!"

Q: What is the most cutting-edge technology or framework you actually used on projects?
A: jBPM, Seam, JSF and Java EE6

Q: What is your favorite podcast?
A: I really love the Java Posse, I listen to it all the time... another that I like which is actually non-Java related is Best of Youtube VideoCast.

Q: Which Java book can you recommend and for what reason?
A: It seems that always the latest book I've read is the best one, in this case it's "Clean Code" from "Uncle  Bob"

You can further visit Erik at his Google Profile or on linkedin.

Friday, November 20, 2009

Devoxx day 4/5

Day 4 was really great we had some very good keynote sessions. Ivar Jacobson is the father of components and UML. In his presentation he told us about the work he is doing to standardise the methodologies. Now a lot of companies make their own flavour of a methodology or create an entirely new one but "steal" from others. He want to create reuse so that people don't have to relearn the entire thing but just have to learn the new parts. It's food for thought, that is for sure and if it works out we'll have to wait and see.

After that, another great keynote from Robert Martin a.k.a Uncle Bob he is the founder of fitnesse and very focused on TDD (Test driven development). His talk was about "Filling The Professionalism Gap" by being Craftsmen. What it comes down to, is to make more IT projects succeed, developers must see themselves more as craftsmen. That means that developers should have a more "ethic" approach in delivering things and only create software that is clean tested and that really works. This is what we already do at CTP but I think a lot of developers can learn from this.

There were also some big announcements made at this Devoxx:
  1. Closures are in JDK7
  2. More new components in JavaFx 1.3
Big stuff and cool to hear that closures are going to make it in JDK7, that is a huge thing.

Also I had some fun of this day at devoxx, I went to the presentation of the JavaPosse. And when you hear the recording you can probably hear me shout: "Switzerland" :-). Of course they had their beer sponsor Atlassian so we had some nice Belgium beer (Duvel). A cool side effect of conferences is the fact that they are normally hosted inside a movie theatre: So at Devoxx they showed the new movie '2012', a very nice movie with lots of effects.

And then it is already the last day and I didn't notice this before, but it's only half a day. So I had some good sessions today one from Andy Wilkinson about Modular Web Applications with OSGi. He uses Spring DM (that's an application server, but not a Java EE certified one) to be able to split his web application vertically and/or horizontally in different OSGi bundles. That could be really good to manage big applications. Also he had some news, they are working on a version that does not require Spring DM, so that is definitely something we must keep an eye on.

That is it from Antwerp, Devoxx 2009!
So let's see what will happen with all the announcements made here in the next year...

Wednesday, November 18, 2009

Devoxx Day 3

The network at devoxx is letting me down a bit, so this post is a little bit late. This day is the first conference day, the university days are over. That means that there are a lot more people here than yesterday. Oracle (Steven Harris) had a long keynote talk in which interesting upcoming details have been presented with what is coming with future WebLogic releases. What they demo-ed was kinda cool. A modular WebLogic based on OSGi (often referred as mSA aka Micro Service Architecture) that you can assemble using a GUI tool. That you can also run in a virtual machine without adding an OS.

Next keynote was presented by Roberto Chinnici from SUN, he is the spec lead for JavaEE6 and gave a quick overview what is new in EE6. As I already had a 2 hours talk about that topic during the university days there was nothing new to me but all in all it well covered all aspects for people hearing about it for the first time. One of the cool things in Java EE 6 I like most is the modularity of the web.xml being part of the Servlet 3.0 spec. Using 3rd party frameworks only requires to add a library, instead of also adding a servlet or servlet filter in your web.xml.

Also announced in the keynote is that everything presented at Devoxx is going to be released on parleys.com (currently upgraded to version 3!! ). That is great as all the presentations I've visited can be watched again including comments by other visitors etc.

During the break I ran into a lot of people I know from previous companies I worked for. It is always nice to hear what they are doing now and what other sessions they have seen and to tell them if they ever want to work for a nice company in Switzerland, I would know a good one :D

Now an update on where JDK7 is right now by Mark Reinhold. Great talk about what is important and where the focus for making Java move forward is going to lay. Talking about Project Jigsaw this is the first time ever I have seen some implementation how this could/would work. The shame is that there is no JSR for Java SE 7 so all development will not progress as long as this is the case. What was very surprising is that Mark wants Closures in, but in a very simple form, but that is great news for a lot of things Closures will make my code look nice.

In the keynote Apple gets a lot of criticism about being slow accepting apps in the store and the kind of feedback Apple provides when apps are disallowed.

Lunch break: Bumping into a lot of people again that I know; Talking to someone from JBoss about their community, now I have a nice CD to give away.

James Gosling is talking about the Java Store and I hope he is going to tell us that we here in Europe can use it now. So he is talking that we should provide him with feedback on the stuff they made, but as of now the Java Store is still not accessible for us. That makes his whole talk a bit pointless. Yes, I would love to have a platform I can sell my hobby projects with, but no need to tell me about how great it is when I still can't use it. There are a couple of countries being added in the near future, but Switzerland is not one of them.

Cameron Purdy tells us how we should change our programming paradigms if we want to use multi core, multi node programs. So the answer to all our problems is to use partitioning? I'm a bit puzzled how I could use this. I think this presentation could have been a bit more concrete. He presents all theoretical ways to do parallel distributed computing. At the very end I know why everything was so vague, if you want an implementation of all of what he talked about than you'll need to buy Coherence a bit of an anticlimax.

Doug Tidwell will now tell us a little about how to extract a way from implementations of cloud computing. He is from IBM an I hope this is not another product plug and it turns out that it's not, he is funny and a good speaker. What he is trying to tell us is that we need a standard for doing cloud computing, an API to talk to different clouds. The problem is that the services that clouds provide now are so diverse that one API to rule them all makes no sense. That is a bit what I miss, nobody is talking about how using a cloud will impact my design.

Then one of the creators of the Android platform Romain Guy will talk about animation. Romain Guy is really famous in the Java world so his presentation will be good. It's about animating GUI using the cartoon rules. There are some basic cartoon rules for doing animation he shows us how they apply to GUI animation.

Tuesday, November 17, 2009

Devoxx day 2

Today it is day two at Devoxx. What I didn't put in my last post is the BOF I went to last night. BOFs here are great - there are only a couple of people in the room, it is really different than at JavaOne where there are a lot more people. So yesterday I had a BOF with the JSF spec leads (well the 3 key persons: Dan Allen, Peter Muir and Andy Schwartz) and we could in a very relaxed setting ask them some questions about the JSF 2 spec. So we could find out how and why they made some decisions. The question I asked them: "Why is JSF 2 not more focused on components so that I can mix and match components of 3rd party providers?". The answer was that they are looking into that and that a lot of problems one has with that right now is how resources are loaded: all 3rd parties made something on their own. So now all the AJAX stuff needs to be gathered and then they will look into that. Good answer, I'm glad that they are aware of what lives in the community.

My first session of today is a session about JEE6. They are talking about and demo-ing everything that is new in the spec. Antonio Goncalves a French Java Rockstar has a lot of humor and a nice presenting style. JSF 2.0 is kind of confusing, because it could run on servlet 2.5 but also on 3.0 but then less needs to be configured. Yesterday the expert group also talked about this that they communicate better what is now the "preferred" way of doing things. This is difficult when you make a spec. You can't remove things, because it needs to be backwards compatible. This is also the case for EJB3 - there is now a EJB3.1 lite edition where all old stuff is removed. According to them there are some containers being built that only support this spec.

JavaFX is what my next talk is about. This is hyped a lot by Sun and now with the takeover by Oracle also Oracle will continue with JavaFX. The last changes around JavaFX involved a lot of tooling at this year's JavaOne. Tor Norbye presented a tool for designers that they can layout an application for mobile and desktop. Stephen Chin also a Java Champion starts with a nice little JavaFX Puzzle. For his demo he is using twitter but that was a bit of a poor choice, because with the Devoxx network, reaching twitter proves a bit of a challenge. So most of the time we are waiting for some internet resource to load. So I'm changing again, I already know the basics about JavaFX and I was hoping this would be a little bit more deep dive. Emmanuel Bernard is also a guru of the Hibernate team and here at Devoxx he is talking about integrating Lucene into Hibernate as an alternative query API. So the bridge they have built for Hibernate is really cool. In the past we did this on ourselves, have a Lucene index to search on and then load entities when needed. But with the Hibernate search query API we can do it "automatically".

During the lunch I talked to Ceki Gülcü who is also from Switzerland and giving a talk about logback, the continuation of the dead log4j project, tomorrow. He would make a nice speaker on the JUGS.

Now it's time for tools in action again, first up is Gradle. Hans Dockter is the project lead and he gives an introduction about Gradle. Gradle is a build tool that uses CoC and has a DSL to configure your build. Yet another build tool, but this time is using groovy DSL to make a build file. I also blogged that Maven3 is also going to provide this. I don't know what Hans is trying to explain to me or how this is better than Maven3, but he is a bit chaotic. After a while there is a new speaker that is even worse. I think there are some good options in Gradle, but these are not the guys to explain it to me. One thing I did get from the presentation that you could fork your test over more threads, which is cool.

Next up is Scala Actors that will be a good one. You all know of course that Scala is a language on top of the JVM and developed in Switzerland. Because computers are getting more and more processors, functional languages like Scala could be very useful for this, because they are stateless and you don't need to think about how to distribute the work. After a little history lesson, Frank Sommers gave us a concrete example of how Actors can be used in Scala. It's great, a lot of stuff you get for free. Of course the concept of Actors is not bound to Scala, but there are things that Scala offers that make Scala a good language to use with Actors. For instance types in Scala are immutable by default. Great talk and when I'm going to type synchronized in code again I must remember this talk.

That is it for day number 2, it was a fun packed day and I look forward to tomorrow. One more thing I noticed today if you want to present on Devoxx you'll need a Mac and IntelliJ IDEA.

Monday, November 16, 2009

Devoxx day 1

Devoxx is probably the largest European Java Conference. As it always takes place at the end of the year and approximately half a year later than big brother JavaOne, it's a good time to get the stuff again that has been announced at JavaOne and to see how the news and forecasts have been adopted in the meanwhile.

When I think of Belgium I think of beer, bars, chocolate, hospitality and cosiness. But when I arrived and saw my hotel all these feelings went away. The location of my hotel and the conference is in an industrial part of Antwerp. There is nothing here but harbours and sea containers. So there is absolutely nothing distracting me from attending the sessions :D

So my first session of the day was about jBpm 4 and that was very impressive, I've used jBpm in the past together with Seam. I wish that I could use it with my last project. They changed a lot the API making deployment and testing easier. The console is now rewritten in GWT, and there is a web app that business people can use to create and modify processes. Also creating screens for tasks now works!

So with the new version they really focused on working together and fixing the issues with regards to configuration. So I'm definitely trying that out.

Strange thing about this fist day that I haven't seen any companies yet. Maybe they will only setup their stuff when The conference days are starting. OK update on this: they are building up their stuff now.

Another important note... I already have my 2 t-shirts and one of them is a limited edition!

Next up is Architecting Robust Applications for Amazon EC2 , let's see what they have there.

This one was not interesting at all, if I want to know how the webservices of amazon work I'll look it up myself. So I switched to a talk from a SUN guy who is clicking stuff together in Netbeans. What he is talking about is interesting. But his demos don't go further than the wizard screens of Netbeans and he is looking all the time to his webpage.

So after the break it was "Tools in Action" time, these sessions are shorter and focused on tools, hence the name. The first one I saw was about Introducing Scimpi a framework rather than an actual tool, build on Naked Objects, but the concept is a bit old and Scimpi is sort of redefining it. I've used metawidget for similar things but I think this gives me more control over the output than Scimpi and also has more powerful components that I can use.

So now the last one of day one NoSQL with Cassandra and Hadoop. That was a nice introduction and they presented a nice usecase when to throw out the relational database. But I want to know more about it. Let's see if I can find some more talks.

All in all it was a very interesting day and let's see what tomorrow brings.

Tuesday, September 22, 2009

Maven 3 early access

After the talk from Jason van Zyl, I thought it was time to give Maven 3 a try. So I checked out the sources from svn and tried to build. That was the first challenge because even though Jason told us they switched from Plexus to Guice there is still a dependency on plexus 1.2.1-SNAPSHOT. I could not find any binaries for this so I checked that one out and built that too.

So now I can build and run Maven 3. In the presentation from Jason he told us that they didn't want to change too much because they didn't want to break backwards compatibility. They did a lot of tests to fulfil that promise by checking out Maven 2 open source projects and testing them with maven 3. They even have a Hudson grid running multiple builds to ensure backwards compatibility. So I thought that my project will work without any problem. I never do anything exotic in my builds, but how wrong could I have been, because it does not build with Maven 3. It gives the following error that was very clear:


[ERROR] Some problems were encountered while processing the POMs: [ERROR] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: xml-resolver:xml-resolver:jar -> null vs null @ ch.admin.smclient:smclient:1.0.1-SNAPSHOT, /home/edewit/workspace/smclient/smclient/pom.xml

So what I never noticed before is that I had the xml-resolver twice in my dependency list. Once with a version number and one without. Maven 2 never warned me about this. This shows that the dependency management resolving has improved a lot. Also the way the errors are presented is improved I think.

Also Jason mentioned that the speed of Maven 3 has improved, so I tested this as well and it turns out that on my project the speed increase was about 11%. That is not great but it's not bad as well.

Jason said that everything they are working on (Maven 3, m2eclipse and Nexus) is going to be finalized at the end of this year. So I'll be looking forward to that even though I think this version of maven is already a step forward. After more projects successfully built with Maven 3 I'm sure that they intend to add more new features.

Friday, September 18, 2009

Thoughts on Jason van Zyl talking about Maven 3

Today I've been to the talk from Jason van Zyl hosted by the JUGS (Java User Group Switzerland, yes I know it's a ridiculous name). He is one of the authors of Maven 1 and 2, he talked about Maven 3 and what it's going to bring us. And I must say it's quite impressive. Being an open source contributor myself I know that good software is written in 3 times. This was also the main point of his talk. He first made the joke that he never expected us to use Maven 1 but that Maven 2 was useable, and now they are fixing everything in Maven 3. I now use Netbeans because I love the Maven support that it's got. But with Maven 3 they are also developing the m2eclipse plugin. And what Jason told us during his presentation is that also here they are fixing a lot of things there. For instance Maven will have a query-able life cycle, with this eclipse can use only a part of Maven for instance to do a compile. So no longer adding a resource will kickoff an entire maven build and 5 minutes later we are ready to code again. I still think that the editor of Eclipse is better than the one Netbeans provides and Jason also says that the Maven integration was better in Netbeans. In fact they've used a lot of the Netbeans plugin features in the new m2eclipse plugin. Knowing all this I must really give Eclipse another try. What the new maven 3 also will have is a way to describe your maven model how you would like it, so for instance you could use ruby or groovy to create you're maven object model, instead of a xml, we could do something with this just don't know what. One thing I'm really excited about is they are making the maven integration also communicate with other plugins. For instance when you make changes in the WTP plugin about your war, this will also be put in you're pom. The same holds true for PMD plugin, the settings that are in your pom will also be set in the PMD plugin and changes made will reflect back.

Jason is quite a talker, his slides were full with text and he only briefly stopped talking to take a zip of water. His company also makes Nexus a proxy for maven repositories. Other products that do something similar are Artifactory or Archiva. The cool things they've build into Nexus is the ability to also be a proxy for Eclipse plugins. But all the cool things about Nexus are in the commercial version of Nexus like for instance LDAP authentication and lots of features around provisioning repositories.

Talking about their commercial products, they also sell this concept where one can have everything setup for a developer in one go. The m2eclipse plugin will discover where Nexus is, install the necessary plugins, show the projects a developer can work on and even download wiki documentation from confluence or twiki. This can all be configured by the technical lead of the project. I really like this concept, to many times I've seen it take days for a new developer to be up to speed. Not only taking time on his one, but also needing intensive support. With this in place some of that time can be saved.

So all in all I'm very positive about this presentation, JUGS keep up the good work. And I'll be trying the dev build of maven 3 and m2eclipse right away tomorrow. I'll let you know how it works out.