Tuesday, December 19, 2006

Sun AS 9, its really fast, it beats NetBeans.

Okay, let me start of with stating that I am probably doing something wrong here, but yesterday I was amazed by the speed of Sun AS 9.

I'm working on a backend system that uses JPA, and connects with a MIDlet, or rather, at the moment the MIDlet is connecting with the backend. But that's not the issue today. The backend has a daemon running (a thread in the web tier) started by a servlet that generates a data-structure and expands it over time. Because I wanted this to be started at server startup, the thread was started in the servlet's overridden init() method. Because I wasn't sure whether or not my code was working, I set a breakpoint in the init() and started debugging. Guess what, nothing happened, the breakpoint was never hit! Adding some System.outs in the init() showed that it was called, NB's debugger was just never ready to stop on the breakpoint. It seems to be too slow, or the interaction between Sun AS and NB is not synched correctly.
So now I moved the code to the doGet and I kick off the thread in there. It all works nicely and my code works like a charm. And I can debug the code.

So what is going on? I tried several scenario's each time ensuring that I did a clean-build prior to my trial.

Scenario 1: Start my web app from NetBeans by hitting the debug button. Breakpoint in init() didn't pause the app.

Scenario 2: Start Sun AS in NetBeans in debug mode. Breakpoint in init() didn't pause the app.

Scenario 3: Start Sun AS in debug mode and start my web app from NetBeans by hitting the debug button. Breakpoint in init() didn't pause the app.

In all three scenario's the breakpoint in doGet() worked perfectly. Really weird, but at least after a lot of trial and restart of NB it worked, some way.


Wednesday, December 13, 2006

J2ME connectivity with a server app... Ooops I did it again

Recently I was looking at connecting my MIDlet with a backend application running in Sun AS 9, of course developed in NetBeans as well and since I am not really sure whether or not WS are supported by the phones the MIDlet will run on, I generated, well I had NB generate the web connectivity. Really cool stuff.
Then I wanted it all to work, ie send data from the phone to the backend and have the data stored in a database, Java DB included by NB. To get some grips on the whole Java EE 5 thing, I had NB generate a CRUD frontend for the entity classes and I looked at the generated code. This is actually rather clean code and very comprehensive indeed. But from the NB generated servlet unusable. It took me some digging in the Java EE 5 tutorial to find out how to get it all up an running with PersistenceUnits, Resources, annotations and transactions, but I got it all running in the end. I added the annotation of the Persistence Unit to the generated servlet and changed the EndToEndSupport class (I'm not really sure that it is called exactly that way, but it was generated by NB during the generation of the backend connectivity). The change included providing the EntityManager obtained in the servlet to the actual code that is to do the persistency. This was about 2 minutes of work and I was thrilled to see it all working.

Now the "Ooops I did it again" comes into play. I changed the backend functionality a bit, or rather I moved some classes and added some features which wasn't a problem until I had NB generate the code again so I could use the new backend functionality from the MIDlet. All code I had changed to get the persistence working was gone. Fortunately I remembered what I had done, and it all was still in SVN, so not too much harm done.

And this is when I started wondering about where that checkbox is that asks me whether or not I want to use the JPA in the backend I am connecting to from my MIDlet and when checked it will generate all the code for actually persist data send across.... or maybe I am not looking in the right direction to read all about it. Anyway, the tutorial on mobility assumes a working webapp, the web tutorial assumes JSF to be used and it doesn't all come together in one tutorial... maybe I'll document my efforts more detailed, until then: Drop me an email if you get stuck on this.


Thursday, November 16, 2006

Collaborative AWE

Yesterday I was working with my good friend Marcel on our massive multi player mobile internet strategy game (mmpmis?). He had written an API that I recently incorporated in the game and he'd changed it on a conceptual level, so I had to redo a lot of work... not funny. But due to the collaboration support NB provides we could share the various sources and show in the actual code what we thought the other understood, how we wanted it all to work and after about 5 minutes we knew exactly what had to be done.
The chatting feature in NB was replaced by Skype, talking is soooo much faster than typing. The only thing we were missing was some 'free drawing' feature in the collaboration features, where you could circle something you want to focus on, draw lines and arrows to show where you want stuff to go etc. We needed a whiteboard in NB.

Marcel used to be an Eclipse guy, but more and more often he tells me "NB is really cool" or "This feature in NB is really cool". Collaboration in one of those features.


Wednesday, November 15, 2006

NetBeans Mobility Pack for CDC final?

I've played with the final release of NB55 and it really is great. I have some gripes still (Can't get the UML projects into SVN, this just doesn't seem possible). I'll file an issue sometime soon.
The UML projects are great though. Especially for Java ME stuff, a good design is really important when you have to put good programming practices aside because that just isn't efficient enough. Sofar I've used the State Diagram and some Class diagramming. But it really is great. Works pretty much like a charm, although there are some little nuisances. All will be files as an issue once I know it's not me.

Another little issue is the fact that the CDC version of MobPack isn't available for the final release. Integration of emulators from Sony Ericsson and Nokia still seems less than excellent. But the lack of a final version is a shame.

Any ideas on its release NB MobPack guys?


Monday, October 30, 2006

NB 55 is out... and it is NB 55


Yesterday I blogged that after installing NB55 and all additional packs, I got an 5.5RC2 userdir. Today I uninstalled everything again, deleted all files, restarted my laptop and installed everything again. Now it works as expected and I get the 5.5 userdir.

Only thing that's left at the moment is enjoying working with it and starting anticipation on the 6.0 release :)


Sunday, October 29, 2006

NB 5.5 is out... Ooops, minor mistake... it seems RC2 again


I just downloaded all the downloads of the NB5.5 distribution, so that would be NB55 and all additional packs.
I then uninstalled all previous versions of NB, which were NB55 dev, RC1 and RC2 and the M3 release of NB6. Then all userdirs were removed from my system as well. So you can see I've got a clean NB environment. And on with the installation...
Everything worked fine and everything installed fine. Then it was time to start NB55. Finally it's been released. But surprise surprise, the /.netbeans doesn't show the 5.5 subdir, but the 5.5RC2 subdir. So is this the RC2 release all over again? I'm sure it's not, but it looks that way nonetheless.


Wednesday, October 18, 2006

NetBeans 5.5 RC2 is out... just a few more nights.

It's been blogged about before, but they've released the second release candidate of NetBeans 5.5. For me it means that I can work with an even more stable version of NB55. I've got to say that it is very stable since a very long time. The only problems I now and then have is regarding SubVersion, but I'm not sure whether that is because of NetBeans, SubVersion or me. I can't reproduce the problems, and don't get a stacktrace. It's just that sometimes I have to move back to TortoiseSVN and fix things. Don't get me wrong, there is no harm done, I just have to leave my beloved IDE sometimes.

As you might know, I'm currenly working on J2ME stuff, and NetBeans is just the best in that area. NetBeans 5.5 has some major improvements in this area, most notably SVG support. The game we're currently working on uses TinySVG for our menu handling. Doing all the work ourselves using TinySVG and that looks great. But what I've seen sofar of the SVG support in NetBeans is excellent and promising. Now 55 just has be released and my fellow developers will switch as well. I'll keep you posted on how things progress.


Friday, October 13, 2006

NLJUG J-Fall 2006


Another developer's blog. Lasy Wednesday I went to J-Fall, the annual fall Java conference of the NLJUG (Dutch Java User Group).

It was an interesting day. A lot of interesting sessions, but unfortunately I was only able to attend the sessions in the afternoon. To start of with some negative remarks: It was way too hot during the sessions, which made me sleepy. Having said that, the sessions I attended were of a more than decent quality.
The afternoon keynote was all about Spring AOP or rather about AOP and how you can use AOP to have a better representation of your design in your code. Interesting stuff. In fact this was an eye opener for me, sofar I thought AOP was pretty much for adding log statements to your code automatically. Great stuff, although I think AOP won't be used on most of the projects I'll be involved in. I wonder when it will really catch on.
Another interesting session was about Seam, JBoss's glueware to tie a JSF frontend to an EJB backend. Apart from the session's topic, I learned about a great feature of NetBeans, namely to create a complete CRUD frontend based on an Entity in your backend. Now that is some great stuff I should have had on a project a few years ago. Well at that time I created something similar based on XDoclet.
I also attended a session about applying JSF when the frontend should run on a mobile devices, PDAs in this case. Although it was sort of a recap of last years J-Spring keynote on ADF faces, it was still interesting to hear about a real world project utilizing one of the promising features of JSF. Fairly well presented session also.
The last session I went to see was about Facelets and JSF. A relavant comment was given by the audience that hardly ever web-designers are working with their tools on the results of developers. XHTML containing Facelets in this case, although it was presented as one of the strong points of facelets. I think the audience was right and I wouldn't want web-designers to mess with my JSPs or XHTML. Have them either design a prototype of the GUI and let me reproduce it, or have them design it using CSS, which in fact I prefer. Interesting topic and Facelets is definitely something I would like to use soon. Hope NetBeans' Visual Web Pack will provide WYSIWYG Facelet support soon.

That's it for today, have a great day and enjoy what you're doing.

Wednesday, October 04, 2006

Joy after reading the good news...

Today I read the good news, NetBeans 5.5 is in its Release Candidate phase. And MobPack is included. Great news. Even better news is that the Visual Web Pack will be released with 5.5 although not in its final state.
But the best news is that we're getting into a phase where 5.5 is rather stable and I can start convincing people to move to the next version. Why this is such good news? Well I've been playing with the new SVG stuff and now my MIDlets are unusable by the guys I work with. And I have to admit that they're right in that I shouldn't use pre GA versions of tools when developing games that we're supposed to release soon.

Anyway, great to read about the progress in NB.