Friday, November 27, 2009

IceFaces - a sad story continious

We all know how difficult it was in the beginning using Javascript in the past. These days, with all those fantastic JS-Libaries in place, this is not an issue anymore. At least, that's what I thought. IceFaces is having difficulties again and again and again... the latest bug I discovered today was the not working ability to pass the parameter from a selection (radio/dropdown) during a valueChangeEvent to the BackingBean. Maybe IceSoft has a different definition about what cross browser compatibility means...

Wednesday, November 18, 2009

ICEFaces - please do not use it.

I just learned again how software quality is NOT part of the icesoft developement cycle. With Opera, the radio buttons do not submit changes and therefore, my chart did not change. Of cource, they might focus on the transition to JSF 2.0 - but if even the simple stuff is not working like expected how much "enterprise grade" is left? Additionally, they announce things like horizontal rendering of charts e.g the bar chart... let's take a closer look... hm?

Saturday, November 7, 2009

IceFaces - argh§%$"$§

Another creepy IceFaces story... As I have learned, if you want a tabset, you need to wrap it by a form element. If you need to place a simple form within a tab, you are forced to use the outer form element because it is not valid to nest form elements:

<ice:form>
  <ice:tabset>

    <ice:tab name"tab one">
      <ice:inputText/>
      <ice:commandButton value="submit" type="submit" actionListener="#{bean.al}"/>
    </ice:tab name"tab one">
      ...
  <ice:tabset>
<ice:form>

If you take a look at the form, it only conatins a simple input text field and a submit button. The problem occurs if you add a validator and try to switch between tabs - the fields are validated! This forces you to a) remove the validators b) to write the validation logic again in your BackingBean... => IceFaces messed up again!

Friday, October 23, 2009

IceFaces is a fix

I need to say it loud "I HATE ICEFACES"... I'am not shure wether to blame IceFaces or JSF, but with IceFaces, the so called Enterprise JSF implementation, I did not save a minute in development time. I spent hours and sometimes days to get things to work. Even simple things do not behave like expected. Yes, there are many workarounds in the forum for various issues... but often they are useless. After a few month with IceFaces, I want to warn everyone thinking about using it - don't! You are much more productive using JQuery-UI/YUI and do it by hand or use DWR or JAXWS. Just one last time: "I HATE ICEFACES!"

Wednesday, September 23, 2009

IceFaces - pain in my brain PART III

ICEFaces, ICEFaces, ICEFaces... this is another said story. Here is the use case: I have a tabbed set and need to generate dynamically a couple of forms within those tabs - that's it! Sounds simple. But there are constraints. The tabbed set provided by IceFaces needs to be wrapped by a
element itself. Therefore, it is not possible to have multiple forms within a tab! This does not only sound rediculous, this is rediculous!

<form>
  <ice:panelTabSet
    <ice:paneltab>
    <!-- here I need multiple forms -->
    </ice:panelTab ...>
       ...
    </ice:panelTabSet>
  <ice:paneltabset></ice:paneltabset>
</form>

Even if you try to e.g. use parameters or attributes in conjunction with the action/actionListener, you will run into problems - in my case I spent the whole day (!) just to figure out a way of passing parameters with the action using icefaces (Sounds simple too, I know... but try to accompilsh this task with IceFaces). IceFaces - you suck!

Sunday, August 30, 2009

Netbeans - the wrong idea

Netbeans is a great tool and it is equipped with a lot of stuff from different kind of editors to visual editors... it is a great tool - yes, it is. But beginners, trying to learn e.g. JSF and how to use it in a common, IDE-independent way may get the wrong expression. Actually, I used the generated code to get an expression about how things should work myself... but the generated code is not always the best starting point. Therefore I do not recommend to use the visual tools if you are new to a technology like JSF and want to know how actually the technology really works. In the case of JSF, how to use the components is not that difficult... but as soon as you try to couple the M with the V with the C, you are looking for some good code samples.

Monday, August 24, 2009

FrosCon - short review

This year, I attended not as an "odinary" visitor - I was part of the crew : ) It was interesting to see how such a conference was organized by people with a passion for open source software. The atmosphere was familiar and compared to bigger (comercial) conferences it was a really relaxed atmosphere - less buzzword bashing but code! The talks focused on general free open source software solutions and therefore not specific (commercial) products were propagated by the speakers(!).

For the first time there was a Java (sub-)conference taking place. Maven, Gradle, J2MEPolish, Java7, JBoss, Portlets and some more, to name the topics... 5 stars!

Friday, August 21, 2009

Livetracking with KML Part II

Here you can see how it looks like to display a GPS-Position in nearly "realtime" on a web page using the google earth plugin. To achieve this, I configured a GPS-GSM-Tracker to send its position every second to the server via a raw TCP/IP socket. On the "other end" the web browser loads the page, the google earth plugin and a KML file. This KML file tells the Google Earth Plugin to update the KML file content every second. According to the update request, the server sends only the delta - the new GPS-Position - back to the Google Earth Plugin.

If you consider buying a GPS-GSM-Tracker, you could consider buying one of the google phones, too. They come equipped with GPS functionality buid in, and there are tons of GPS-Tracker applications available and it is easy to program for it, if you want to build your own GPS-Tracker software.

Monday, August 17, 2009

Netbeans Platform Training Review



Last weekend I had the chance to attend at a Netbeans Platform (not Netbeans IDE!) 2 day training course. Geertjan, Toni and Josh did a great job and I highly recommend this course to anyone thinking about implementing a Desktop or RIA Application... the course itself was organized by a student driven consulting organisation (aurelius consulting) part of the universitiy in Bonn. Due to the fact that holiday season is still running, the course was not overcrowded and it was possible for the instructors to support everyone during coding sessions. But now the interseting parts - the topics covered:

The Netbeans Plattform - The Netbeans Plattform is the foundation for a lot of software projects and the Netbeans IDE is the best example. But there are others like CRM, MusikPlayer, FotoAlbum, etc. If you are familiar with Eclipse, you can think of the Netbeans Plattform as something like the Eclipse Rich Client Plattform. The biggest benefit you get with the Netbeans Plattform is the provided programming model. It enables you to avoid or get rid of your spaghetti code applications. You are more or less forced to think in modules instead of packages. Packages are nice and handy but with a large codebasis, modules give you another level of abstraction that enable larger teams to split into groups and focus on module developement. If something breaks - it is easier to blame one : )
  • The Nodes-API - this is a great abstraction API. It is not only usefull to display a file system, it is usefull for displaying any kind of structured data like objectgraphs etc...
  • The Visual-API - this API is usefull if you try to visualize some relaed data like a UML datagram.
  • The Lookup-API - this API is somehow similar to the linda system - a global object storage - a big hashmap... it is a convinient way to store and access objects from everywhere within the application.
  • Matisse - is a Swing-Builder with great layout capabilities.
  • ... and many, many more.

Tuesday, August 11, 2009

IceFaces - pain in my brain PART II

Quartz +IceFaces - Again, some pain during developement using IceFaces... this time in conjunction with Quartz; which is a great and widly adopted Task/Job/Trigger Scheduler maintained under the hood of opensymphony. It enables you to execute specific tasks at a given time and interval. But due to the fact that IceFaces uses an old version of commons collections, you need to make shure the version provided with Quartz is picked up. Just remove the verison, bundled with IceFaces. It is a small issue, but another one I do not really want to take care of.