Tuesday, February 2, 2010

Looking thru the mirror

After a loaf of Java, bite of JavaScript and little bit of PHP in my most recent career, last week I headed to Poznan .Net Group meeting to see what are this guys doing up there.

Assuming you're a Java guy, you know who is who in Java world, you know what's JEE, you wait for Java7, can tell why NetBeans sucks. You meet a Java friend and together whine about Maven, Eclipse, EJB, then have a beer and next day all again.

And now there are those .Net folks. What are they up to? One guy there was from company of approx. 200 Java engineers. Only his (10 person?) team does .Net there. Oh my, are this two groups talking with each other during a lunch? That's what I was wondering on my way there.

And the meeting was fun. At first look, just as I had passed a magic mirror with applied "s/Java/.Net/". About 10 people in the room (quite like on our Java group), tense air, two topics: S#arp Architecture and PowerPivot review. I especially liked S#arp because it's kind of framework. PowerPivot on the other hand is actually a tool, powerful and good to know about, but I'm not going to use it or work on anything similar in near future.

The first speaker, started with a little history background of web applications, then did quick breakdown of all S#arp parts and finally small demo of what it does.

S#arp, as it was said, is a bunch of nice tools glued together, adhering to common conventions. There's NHibernate, TweetSharp, NUnit, N4, jQuery and couple more Nthings that I don't remember. It's a generative approach, where you customize prefabricated templates to produce some C# code. Generated stuff uses bunch of custom code based on various popular small tools.

So while you could basically do all of this by yourself, learn NUnit, N4, etc. etc., you can just focus on describing your model, and then get very basic unit tests, web application, data layer abtraction and something more with just one click.

So I'd be interested to learn about Java solution, where you edit a model, and get ready web application. I know I can use EMF, to easily get running Eclipse application, it generates tests skeleton, can customize templates. But fundamental difference between EMF and S#arp is that in EMF you have to buy everything (validation, data persistence, etc.) from one source, whereas S#arp adapts to already existing technologies and is mere MVC integration layer. Second, standard EMF doesn't generate web apps. Third, some JEE folks just don't buy code generation and EMF so maybe there are more arguments which such non-JEE guy as me doesn't understand.

The other intersting observation was IDE. There's no problem, like we once had on Java meeting where speaker nearly refused to show example, because we had only Eclipse and he works on NetBeans. Everyone uses VisualStudio. And actually some of the mentioned small tools integrates with VS if you copy one or two dlls here and there.

It's pretty much like joining JEE knowledge, JEE tools, EMF Runtime and EMF tools to work together. You get EMF tooling to create a model and then generate a standard JEE application, adhering to conventions, best practices, etc. This is what tons of JEE developers could like. With little knowledge of patterns, conventions, practices they'd be quickly making standard JEE apps adhering to best practices, conventions and patterns.

That's just a highlight of the meeting compared vs. my little Java knowledge. But there were also many little differences in group governance, people motivation, focus on trends and so on. I encourage anyone to try this excercise and look thru the mirror too.