Eclipse Europa is here
Tuesday 17 July 2007 @ 3:52 pm
Filed under:

Two weeks a brand new Eclipse called Europa has been released.
This release is just as the previous one (Callisto; version 3.2) a combination a range of of Eclipse projects.
So this release is not only one for the Java IDE, but also the Web Tools Platform (WTF), Eclipse Modeling Framework (EMF), CDK, Eclipse Dynamic Language Toolkit (DLTK), Eclipse Business Intelligence and Reporting Tools (BIRT) and much more.

Since the whole Europa release is too large for the average developer, the best way is to only download it by starting of with the Platform Runtime which can be found here
and install only the desired stuff using the Update Manager from Eclipse (”Help -> Software Updates -> Find and Install..” from the menu bar) via the “Europa Discovery Site”.

After you installed your customized Eclipse IDE you can check New and Noteworthy from the Platform, Java Development Tools (JDT) and Web Tools.
To summarize the new and noteworthy in Europa, I personally found the following relevant items:

  • You can optionally use “Save Actions” (configured and enabled in the preferences) to perform all kind of actions when saving a Java editor in Eclipse. Possible actions are code formatting, adding missing @Override and @Deprecated annotations, Organize imports and removing trailing whitespace.
  • Support for the Java Persistence API
  • We can now finally benefit from a visual JSP / JSF Web-Page Editor
  • Full JSF 1.2 support including a visual Faces configuration editor
  • Long resource paths are now supported on Windows. Requires 1.5 or higher for it to work.
  • Improves refactoring like refactoring directly inside the editor (without a dialog) and no need anymore to save your editors before doing a refactoring.
  • Workspace relative paths are now possible for JavaDoc locations. This way it’s now possible to place a zip with the JavaDoc of a library inside your project and attach it to your library. The advantage is that each developer will automatically get the JavaDoc when the check-out the project from version control. This is especially helpful for commercial libraries for which you don’t have the source code.
  • CTRL + 3 will give you a quick access to UI elements such as views, commands, preference pages etc.
  • And finally for Eclipse is now fully functional for Windows Vista.

The items I described above are just the tip of the iceberg. This because Europa consists of 21 Eclipse projects, so I barely scratched to surface so to speak.

— By Emil van Galen   Comments (0)   PermaLink
javaone2007: JFX or rich clients revisited
Thursday 10 May 2007 @ 5:56 pm
Filed under:

Sun likes to call them ‘integrated rich clients’, a nice buzz word for reinventing user experience. Yesterday I visited two rich client related sessions. One about GWT, wich was more or less a copy of last years session, and one about JavaFX (formerly known as F3, nowadays already abbreviated to the better sounding JFX). Chris Oliver amazed the audience with really stunning effects and smooth looking user interfaces: Definitely an Oehhh! and Aahh! session. It is too early to make up conclusions yet but it seems the Sun developers have gotten graphical interfaces, and especially the way an interface gets set-up to meet the design made by a professional design team, finally right. JFX introduces a new scripting languages, called JavaFX Script. Which is, when you ask me, a little bit redundant but, due to tongue slippery, I think the script part of it will disappear in normal human to human communication. (We aren’t calling java, JVM Script or are we?) But despite the name, the scripting language itself looks promising. It’s statically typed, which can be subject of religious language battles but that is out of the scope of this blog-entry, and it uses a declarative building styling to declare UI components. When compared to the XML variants like XUL, SVG but also Flex and Laszlo, a breeze to read. And when compared to regular Swing (or SWT!) probably a breeze to write also. In other words, refreshing.

So, should we all make the move and forget Ajax or Flash? Maybe, but maybe not. (GWT is still pretty cool technology and as far as I have seen it, it is the best possible solution for rich browser apps. For example take a look at how the guys from Google crack performance issues. Nuff said).There are still some irritating issues to overcome. First of all there is no out of the box data binging support (for example to call a RESTful service and bind the results to user interface components). But maybe more problematic is the deployment model. Which is not there! Yes, Applets or Webstart but both need a ridiculous huge download for the latest JRE release. Not really user friendly. I have to admit, Sun has announced to work on this problem and promised to come up with a solution as soon as possible but in the meantime it is missing. And a bad deployment model at the moment there is a lot of momentum is marketing wise not really what you call handy. Missed opportunity?? Anyway, JFX is right here right now so for me it’s playing time.

— By Okke van 't Verlaat   Comments (0)   PermaLink
javaone2007: just a meme
Wednesday 9 May 2007 @ 6:05 pm
Filed under:

After visiting Neil Ford’s excellent and inspiring presentation about domain specific languages, I was wondering if a DSL is actually nothing but a kind of computer instruction slang?

— By Okke van 't Verlaat   Comments (0)   PermaLink
javaone2007: it seems the sun is shifting
Wednesday 9 May 2007 @ 6:03 pm
Filed under:

JavaOne 2007 is only just one day on its way, the first couple of 81 hours have been past, and my maximum information observing level has been reached already: Too much to check out the coming weeks. Too many high impact announcements. Too many cool new technologies, too many new tools and too many new paradigm shifts.

Thou shall open up everthing you got, except for some key strategically important technologies, and thou shall spread the words to open up everything. Under the safe covers of being a community is more important than being a regular old company, open source is the new paradigm. Open opportunities as Sun is like to call it. Great move I think! And its paying off already. Except for the JDK, which is conceptually a big step to open up but practically nothing but a small give-away, goofy things are seing the light under Sun’s GPLv2 umbrella.

But Sun is making more, not unexpected but also not foreseen, movements. Where, in my very humble opinion, Sun was traditionally not very well doing in the area of user interaction (Does the term metal look and feel still rings a bell?), they seem to have been paying more attention and energy on this topic. Possibly driven by competition, Sun (just like Microsoft by the way) is following the vision of MacroMedia (indeed, not Adobe’s vision unless vision can be bought) and has been moving into the direction of rich internet applications (or integrated rich clients as they tend to call it). Form follows function has become JavaFX: A stunning way to re-implement applets. Hopefully marketing can handle it this time.

More news? Yep Real time java has finally been born so JSR-1 can be removed from the todo-list. Blu-Ray is currently hot topic. And Glassfish V3, the reference implementation of EE5, only needs a 100Kb bootstrap and starts up in less then half a second unless some serious applications have been deployed. (By the way, glassfish seems to have a pretty slick architecture for an application server and another by the way seems to be the question whether we want to use commercial available application servers from the old pre-ee5-era if this thing is really as good as the five minute demo has shown us.) Oh, and before I forget, everyone should sheck out NASA’s project World Wind, google earth as a swing widget. And in the tradition of the new openness completely free to abuse!

Finally, and this could be experienced during last years conference already, other languages than Java are not ‘wrong’ or ‘dirty’ anymore. Ruby has been adopted as a first class citizen of the virtual machine and the JRuby team has not been hired to implement a funny scripting language, but seems to be hired to jump on the bandwagon not as a an ignorant passenger but more as fully armed musketeers. It is very impressive to see how Sun is dealing with the shift from java to other languages. And it is also very impressive to see the progress that has been made in tool support. Last years netbeans hype was a bit overdone but this year there are enough reasons to promote the upcoming version 6. As far as I could see, changes are fair Netbeans will become the platform of choice to develop Ruby, and especially Rails, applications.

— By Okke van 't Verlaat   Comments (0)   PermaLink
Very interesting blog about J2EE performance
Tuesday 1 May 2007 @ 10:36 am
Filed under:

Hi all,

Vincent Partington from Xebia has been blogging about J2EE performance problems he and his colleagues have encountered.

They have compiled a top 10 list. It is a very interesting read, as it is all very recognizable :-)

See http://blog.xebia.com/2007/04/30/ejapp-top-10-countdown-wrap-up/

(and TheServerSide.com as that is where I stumbled across the link to Vincents blogposts)

— By Ruben Sprangemeijer   Comments (0)   PermaLink
javaone2007: coolest session title
Thursday 19 April 2007 @ 4:16 pm
Filed under:

This years javaone conference is about to happen and since my conference pass has been ordered it is time to wrestle myself through the program in order to find the most optimal schedule in terms of quality and time. Meaning a lot of reading, shuffling, weighting and head-scrabbing. A process which probably will last untill the last session of the conference. But some sessions are a definitive certainty. And one of these sessions tagged whith the coolest session title of the conference:

Java™ Puzzlers, Episode VI: The Phantom-Reference Menace/Attack of the Clone/Revenge of the Shift

After last years ‘Tiger Traps’, changes are big this session will end up high in this years top-10!

— By Okke van 't Verlaat   Comments (0)   PermaLink
Two-0-Four, Twelve times faster
Thursday 19 April 2007 @ 12:09 pm
Filed under:

Last week the latest release of the Spring frame work was announced on the springframeworkdotorg website. Nothing special, just an .0.x bugfix and enhancement release, actually nothing exiting. So why is it worth a blog entry? Because of the curious announcement that spring bean creation has gone through tremendous performance improvements. Let me Quote: “Regarding the performance improvements, repeated creation of Spring bean instances is up to 12 times faster in this release than previous versions of Spring 2.0. AspectJ-based weaving performance has also increased by a significant factor. “.

Wow, twelve times! That is a pretty precise and accurate number! So not ten, not eleven but exactly twelve times faster! But to bad, my manager asked me to speed up bean creation time by a factor thirteen so I think I need to switch to Guice instead.

The problem in this statement is not the number itself but the fact a number is used to express improvements in an area the expresser has no full control. Currently I’m downloading both the 0.3 and 0.4 releases of Spring2 and my first conclusion is the 0.4 release is about 1.01 times bigger in terms of megabytes (off the record, 62.2 MB for a framework download is pretty fat). My second conclusion is the 0.4 release got downloaded 1.3 times faster. Both are facts, (it’s happening straight in front of me!) but the last fact does not express anything! There are too many factors that are influencing this magic number. Same with the 12 times faster statement. I won’t argue about the fact 2.0.4 has improved bean creation and I immediately believe there situations the number is matched by the comma. But personally, it says nothing to me: I’ll wake up when someone tells me the startup time of all my spring based apps have been square rooted. And even then I’ll point to the useless sleep statements in my constructors which are sitting there only to invalidate bold performance claims.

Note I’m not trying to nitpick on anything; every improvement is more than welcome, as long as my beans see the light, but this kind of statements are besides hollow, technically completely insignificant. Why not give insight *what* has been done to improve performance. Like:

  • AbstractAutoProxyCreator caches advice information per bean, for efficient prototype creation with auto-proxying
  • AnnotationAwareAspectJAutoProxyCreator caches Advisors for singleton @Aspect aspects, increasing performance
  • BeanWrapperImpl mimimizes bean name parsing overhead and caches parsed property path tokens
  • DefaultListableBeanFactory caches pre-converted property values as far as possible
  • ConstructorResolver caches the resolved constructor or factory method, for faster re-creation of prototype instances
  • ConstructorResolver caches converted argument values, to avoid conversion overhead for re-created prototype instances

(As one can see, ‘grep “cache” changelog.txt’ clarifies everything)

Nevertheless, I’m pretty happy with this release and I’m only writing this down as an advice for the upcoming 2.0.5! And now the changelog is still open on my desktop, I can end this blog entry by probably the most important enhancement:

By the way, JRuby 0.9.8 claims IO sometimes to be 6.5 times faster ……

— By Okke van 't Verlaat   Comments (1)   PermaLink
Differences between C++, Java and C#
Wednesday 4 April 2007 @ 9:04 pm

Bjarne Stroupstrup, the inventor of the C++ programming language, has an interesting technical FAQ about C++. He has an example in the FAQ that inspired me to try this out in C++, Java and C#. Have a look at the following C++ code. What do you think this prints?

(NOTE: The C++ code looks a bit weird. I had to replace the angle brackets with ‘[’ and ‘]’ because the WordPress editor does not let me enter angle brackets properly, even if I edit the HTML code manually…).

 

 #include [iostream]   // NOTE: Use angle brackets here

class Super {
public:
    void method(int i) {
        std::cout [[ "method(int): " [[ i [[ std::endl; // NOTE: Use angle brackets here
    }
};

class Sub : public Super {
public:
    void method(double d) {
        std::cout [[ "method(double): " [[ d [[ std::endl; // NOTE: Use angle brackets here
    }
};

int main(int argc, char* argv[]) {
    Sub obj;

    // Which method is called for each of these statements, the int or the double version?
    obj.method(10);
    obj.method(3.2);

    return 0;
} 

Here is the Java version. What do you think this prints? Do you think Java works the same as C++ or not?

 

 class Super {
    public void method(int i) {
        System.out.println("method(int): " + i);
    }
}

class Sub extends Super {
    public void method(double d) {
        System.out.println("method(double): " + d);
    }
}

public class Main {
    public static void main(String[] args) {
        Sub obj = new Sub();

        // Which method is called for each of these statements, the int or the double version?
        obj.method(10);
        obj.method(3.2);
    }
} 

And lastly the C# version. What do you think - does C# work the C++ or the Java way, or is it the same - or different?

 

 namespace Example {
    class Super {
        public void method(int i) {
            System.Console.WriteLine("method(int): " + i);
        }
    }

    class Sub : Super {
        public void method(double d) {
            System.Console.WriteLine("method(double): " + d);
        }
    }

    class Program {
        static void Main(string[] args) {
            Sub obj = new Sub();

            // Which method is called for each of these statements, the int or the double version?
            obj.method(10);
            obj.method(3.2);
        }
    }
} 
— By Jesper de Jong   Comments (3)   PermaLink
NLJUG Masters of Java 2006
Wednesday 29 November 2006 @ 2:33 pm
Filed under:

Thursday November 23rd, 6:30 am. Eric Ettes and I are on our way to Rotterdam to compete in the “Masters of Java 2006” contest (MOJ) organized by the “Dutch Java User Group” (NLJUG). Because of the bad weather, and the thousands of MOJ spectators crowding the Dutch freeways ;-) , we arrive a few minutes after 10am. We missed the coffee and test round.

A short description of the environment we just entered: the contest is held at a games shop in the center of Rotterdam. One of the sponsors’ description: “MOJ, held at the GameSyndicate in Rotterdam. A place with an excellent hackery feel to it - and bad lighting”. The room is filled with computers, in some corners PS2’s, Xbox360’s or GameCubes can be found. A big screen displays the remaining time for the current assignment, along with a list of the competing teams. Also visible is which team is currently compiling or running unit-tests (accompanied with the green/red lights for succeeded and failed tests).

About ten minutes after acquiring a computer, the first round begins. An automated gong marks the start of the round, the assignment pops up on our screen. For convenience a paper version of the assignment is handed out to all teams. The first assignment is not too much of a hassle, same goes or assignment two. At least we’re not going home with zero points. After each assignment a graph is shown to display the points each team scored (total score including the last assignment). The faster you finish the more points you score. The difference between the teams is not big, however there are a few teams not finishing the first assignments in the available time (30 minutes per assignment). Not really noticeable in the score graph, maybe to ease the pain. A short chat with one of the contest organizers points out the assignments go from (relatively) easy to difficult. This is repeated after the lunch, so the first assignment after the lunch (six assignments for the entire day) will start relatively easy again.

We misjudge the third assignment, but we’re determined to make up for the loss after the lunch. We’re lucky because the forth assignment seems to use familiar techniques, we soon have an idea of what the solution must be. In our enthusiasm we miss a hint in the assignment. After fifteen minutes this appears to be crucial as some of the teams already submitted their solution. We didn’t even run a unit-test yet… we don’t finish the assignment in time, zero points :-( . I’ll leave the remaining two assignments out of the review, we didn’t score that well (read: zero points ;-) ).

This doesn’t really matter, we went for fun and fun we had. The atmosphere was good and the assignments were fun and challenging. After each assignment the solution was reviewed and the background was explained. Leading to “ah, of course!” reactions. To get an impression, the assignments of the 2004 and 2005 contests are available on http://mastersofjava.2en40.nl/Assignments.html. Together with the contest software (same URL) these assignments can be tried on your own computer.

Overall it was a pleasant, inspiring and most of all fun experience in an appropriate setting. Next year Eric and I will be present again, then for a higher end ranking. Maybe we’ll see you there.

External links:
http://www.nljug.org/pages/events/content/moj_2006/ - MOJ homepage
http://www.gamesyndicate.nl/ - The setting this all took place in (link: Foto albums). http://mastersofjava.2en40.nl/ - The competition software is available here, also available are the assignment of 2004 & 2005.

— By Mark van den Bergh   Comments (0)   PermaLink
All I want is coffee flavoured coffee!
Wednesday 22 November 2006 @ 3:03 pm
Filed under:

Never thought I would ever quote Denis Leary in a J2EE context but I’m dying for coffee-flavoured-coffee right now. Just one (damn strong) taste of coffee which strikes the tongue and keep you awake. I’ll try to explain

The immediate cause: InfoQ’s has published an interview with Gaving King about the evolution of Seam, Gavin’s version of a framework telling you how to build (web) applications. I’ve written about Seam before and at that time in my opinion the framework was based on some interesting ideas and principles but lacked simplicity mainly caused by hard to set-up working examples. Never looked at it again (although the intentions were there ….) and I’ll point out immediately I’ll probably won’t look at it right now. So what’s so interesting about the interview? Besides some nice food for thoughts about the implications of a fine grained AJAX approach on database load and some old insights about the effects of state management on clustered environments, not very much. Except for one small comment Gavin makes as a reply to someone commenting exactly what has hit me one year ago. Let me quote:

Comment: I haven’t gotten the time to try out the new Seam release but I hope that setting up a project has gotten easier.

Gavin King’s reply: seam-gen makes it *super* easy, at least for EJB3 on JBoss users. We will be working on expanding the functionality of seam-gen to support other usecases (JavaBeans+Hibernate, Tomcat, J2EE, etc).

And that answer shows exactly what is completely wrong with the so called enterprise edition of java: There is no simple straightforward one-way road for doing things! Choices, choices, choices and a lot more choices that make life easy to model but hard to implement. Isn’t the power of application frameworks that choices are made four you? I would expect a framework like Seam dictates me to take the EJB3 route and pave things in such a way I really start to like the usage of EJB’s. Gavin, seam-gen is okay the way it is, actually it is right what was missing in your initial try. Instead of focusing on other choices, focus on more/better/advanced code generation! Expand into real functionality and help developers by filling room instead of giving it. Another illustration from the exact same interview: the different JSF frameworks Gavin lists. They seem to talk with each other to guarantee smoothness. Gavin calls this maturity, I rather use the term abstemious. A small sidestep without going into a fully blown JSF discussion but isn’t it remarkable (that’s the right word for maturity!) within EE we need a standard (JSR 299) as a glue between two other standards (JSF and EJB) in order to deal with application components in a unified way.

Right now I see a lot of developers (technical designers, architects, name them) spending too much ineffective hours on the which framework to utilize and which standard to adopt question. (not even mention the effort that can be thrown away due to steep learning curves and unexpected showstoppers after the answer to this question once again has lead to unknown trails). One can argue technical design is all about decision making and deciding what to apply is part of it. But in my point of view, technical design is all about the decisions that need to be made in order to translate a business problem into a technical solution. It’s not about choosing frameworks for every layer we can think of. Why are we programming Java? Not because at the start of every project we reconsider it. Nope it’s because we know the language and we know the language is capable of building what is desired in a (cost) effective way. And maybe once in a while we enter some self reflective mode to find arguments that reach beyond the arguments needed to make choices in a project context. And once in a while we pick up innovations, jump on bandwagons and maybe leave the paths we’re walking. Simply because we (as in the average software developer) know that when we do this every day, we can not keep pace with those who don’t.

Why is it frameworks and standards are treat in a different manner? What makes the adoption of yet another framework or standard so tempting?  The steps of changing seem to be relatively small. Due to the it’s all Java isn’t it and hey we have a new project so what the hack we’re here to learn aren’t we mentality, risks are not identified clearly. And as a result, unified application development is a farce and for every different twist, more glue is needed. And as soon as the need for glue is identified by more than one developer, new frameworks and standards arise.

Note, this blog entry is not meant to bash Seam nor the interview. It is meant to address a fundamental problem that has been floating around for a while and has been addressed in the past but seems to be persisting enough to get repeated every now and then. And Seam just functioned as a trigger (this time). Everyone who like to use Seam, go ahead, fine with me. If you do not mind, I’ll focus (projectwise) on a Spring based application design until Rails has really swallowed the way I think :-) . But if you use Seam, stay with it at least the coming years (and so, stay with EJB3 and push Gavin to put all his energy in this choice instead of serving all other ways to technically layout an application).

A final thought: Is it a coincident Joel on software has published an article about choices (=headaches) on the exact same date as the interview publication? It probably is. But what Joel describes (15 ways to shut down your laptop) is exactly how we (as in the java community) build applications. Nuff said. Where’s my coffee?

— By Okke van 't Verlaat   Comments (3)   PermaLink
Next Page »

Menu


Blog Categories

Browse by Date
September 2007
M T W T F S S
 12
3456789
10111213141516
17181920212223
24252627282930

Upcoming Events

Monthly Archives

Recent Comments

Links


XML Feeds Option


Get Firefox  Powered by WordPress

code validations
Valid RSS 2.0  Valid Atom 0.3
Valid W3C XHTML 1.0  Valid W3C CSS