Skip to content

Archive

Category: Tools


You’ve definitely heard about Xtext, the famous text modeling framework, community award winner . We are all looking forward to the new project management wonder: the release of Helios, upcoming on June the 23rd, which will include Xtext 1.0.0. In this article, I want do describe some aspects of integration of Xtext-based languages into IDE. continue reading…

galileo Finally, another annual release of Eclipse has arrived: version 3.5 aka Galileo.
Galileo is the release of Eclipse IDE synchronized with packets tuned for the Galileo release. Eclipse IDE has moved on from being a sole and mere development environment to being a rich architecture. Often, this is not visible to the novice user.

Galileo, or the JDT (Java Development Tools) to be more precisely, does not surprise with a load of stunning new features, instead, its a solid continuation of improvements. Concerning the JDT part, it has lost its pace of former days. But Eclipse JDT still is the reliable friend at your side, helping you code. This is a good thing, since Eclipse has been the IDE of choice for many, many Java programmers for a lot of years now and has grown to something like a “standard”. Its usability and reliability are well known and especially the first part has been constantly improved.

Galileo now draws its innovative power from the huge amount of different projects which were developed for it. The amount of tools for modeling is impressive. However it is not surprising, since modeling has become a sport in the past month. Consequently, it is bare logic to improve the tooling capabilities and quality. Galileo is following this path, not only because of Eclipse, but with what is available for it.

Code is poetry!

I found strange problem running wscompile (from Sun’s Java Web Service Developer Pack 1.6) inside Ganymede (Eclipse Version 3.4.1). The run of the wscompile Ant task produce a problem. The build script execution freezes on the wscompile task. It prints the following message on console but then nothing happens.

[wscompile] wscompile ...\env\java\1.4.2_03\jre\bin\classpath-classpath D:\workspaces\general\lib\bla.bo-0.0.1.jar; ... D:\workspaces\general\lib\... jar.0.5.5

In this line, the classpath of wscompile is printed.

The build script uses configured Apache Ant in version 1.6.5. I tried to start it with Java in versions 1.4.2 und 1.6.0.10. Both works in Europa (Eclipse 3.3.x) but don’t work in Ganymede (Eclipse 3.4.x), except for the first run. It seems that Ganymede provides a different handling for Ant scripts. Every first start of an Ant build script produces new “External Tool Configuration” (if not already there). If this configuration already exists, wscompile task doesn’t work!

This means my build script with wscompile task works only once, every first time after deleting the “External Tool Configuration”. I could live with that if I wouldn’t need that configuration. But I need that configuration to use different java version that is the workspace default.

Do anyone know how to fix that?
Here is my task definiton.

<taskdef name="wscompile" 
		classname="com.sun.xml.rpc.tools.ant.Wscompile"
		classpathref="class.path.jwsdp"
		/>

and also task usage in the script

<wscompile fork="true" import="true" base="java/class" sourceBase="java/generated" verbose="true" features="documentliteral, wsi, searchschema, serializeinterfaces, explicitcontext" mapping="java/generated/META-INF/jaxrpc-mapping.xml" config="metadata/wsdl-config.xml" xSerializable="true">
	<classpath>
		<path refid="class.path.local" />
		<path refid="class.path.ant" />
		<pathelement path="${java.class.path}" />
	</classpath>
</wscompile>

Comments are welcome.

JUGHHThe holiday season is over and we can enjoy an event every week. After Maven 2, Eclipse Stammtisch and reasoning on modularity an event on enterprise systems can be visited. It seems that after the last visit on Java EE 5 Hacking Adam want to tell something on Java EE 6 Hacking…

This session will be interactive / openspace like. He will walk through the new EJB 3.1 APIs and explain some interesting stuff as well. It is the logical conduction of the first JUG HH session in May 2008.

Location: Lehmanns Fachbuchhandlung (Hamburg Hauptbahnhof), Kurze Mühren 6, 20095 Hamburg

Date and Time: 16.09.2008, 20:00
Topic: Productive Java EE 6 – Rethinking Best Practices And Bashing On Patterns, Cluster One

Abstract: Java EE 6 is great, but many questions like:

  • Are DAOs dead?
  • Do JSF really suck?
  • Are anemic JPA-entities a best practice?
  • Are XML deployment descriptors legacy?
  • Are EJBs lightweight?
  • How to test EJBs?
  • Is layering an antipattern?
  • Do we need factories?
  • How to integrate with RESTFul services?
  • Is it possible to deploy EJBs into a …WAR?
  • Are “plain old web containers” dead?
  • Services or Objects – what is the way to go?

still remain open. These and many other questions will be discussed interactively with …code.

Speaker: Adam Bien

About the speaker: Java Champion Adam Bien is a self-employed consultant, lecturer, software architect, developer, and author in the enterprise Java sector in Germany who implements Java technology on a large scale. He is also the author of several books and articles on Java and J2EE technology, as well as distributed Java programming. His books include J2EE Patterns, J2EE HotSpots, Java EE 5 Architectures, Enterprise Architectures, Enterprise Java Frameworks, SOA Expert Knowledge, and Struts, all published in German.

As BEA technical director, Bien is also a member of the NetBeans Dream Team; an Expert Group member of the Java Community Process for EJB 3.1, JPA 2.0, and Java EE 6; and involved in embedded Java, Grid, and P2P technology. He currently works as an architect and developer in several J2EE-Java EE Model-Driven Architecture (MDA) and EAI component architecture projects for the Java EE platform and .NET.

On Wednesday, August 27th I visited a presentation about Apache Maven 2. I will describe in short here what I have learned from that event and what you might want to know for your decision if you read more about Maven 2 or not. I will not repeat the basics or advanced features of Maven 2 here, it has been done a million times elsewhere. maven2-lifecycle

Maven 2 is often compared with Apache Ant. Sometimes it is seen as an extension to Ant. This is wrong. So, what’s the difference? Ant is a build tool, meaning you can build your projects with it. Maven is a “project management and comprehension tool”. Project management is actually focussing the technical part, is does not include Gantt diagrams or things like that. What is does include is a description of the technical part of your project, including a source repository, dependencies, documentation, developers and so on. What is the advantage of this?

  • Project setup is easier now. No searching for required libs, setting build paths, dealing with other weird stuff
  • Project comprehension is easier. The information about the project, the Project Object Model (POM) is human readable. That’s for a reason. Especially in larger projects this seems to be useful to me.
  • Changes in projects are tracked easier. Someone includes a new library? All the colleagues’ builds are broken. You have to communicate somehow to your team mates that they have to use that lib. With maven, just check in the new pom file, which includes the new dependency. All your colleagues will get it automatically from the repository you have in your company (hopefully).
  • Release management and integration in CI systems comes out-of-the-box. You have all you need to do that. Simply.

Granted, you can do a lot of those with Ant if you are good at it. But with Maven 2 it is a lot easier. As Maven 2 brings a standard project layout, projects not only look similar in their structure every time but they can build in support for a lot of things this way. The pom files are very short compared to Ant build scripts doing the same and more readable. Granted again, you can make your own Ant script containing standard targets you use in every project. You split your Ant files in project specific and general parts. Your project specific part is very short then. Then you did just what the creators of Maven did. Congratulations, you are a smart guy.

I am not saying that all your problems are solved by using it. Maven 2 has some weaknesses as far as I can tell from my limited experience with it. I heard from a participant that the automatic dependency resolving does not work all the time. Normally, Maven would resolve all transitive dependencies from all libs. If lib A is dependent on lib B and you include A in your project, the description of A includes the dependency. Maven will include B, too. I don’t know if that is a failure of maven or the guy who told me about it. AFAIK it needs time to get into it, I often encountered behaviour I didn’t expect. But that was because of my lack of understanding of Maven 2, not because of Maven 2 itself. So, the disadvantage is the same as with every new tool. You need time to learn doing stuff with it, and unfortunately you need to fail sometimes to learn from your mistakes.

BTW, Maven 2 is open source. Everyone who misses something or wants something to get better is welcomed to get into the dev team of Maven 2. One of  those points would be the beloved documentation which has great potential for improvement.

Hope this helps integrating Maven 2 into your understanding of the software development world.

The Java User Group Hamburg (JUG-HH) organizes another event at Lehmanns Bookstore in Hamburg. This time the subject of the talk is build management and project automation with help of an open-source tool called Maven. Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.

Subject: Maven 2
Date: Wednesday, 27-th August 2008
Time: 20:00
Who: Christian Matzat

On June 16th another Eclipse Demo Camp took place in Hamburg. Organized by Peter Friese of itemis and Martin Lippert of it-agile, Eclipse enthusiasts and presenters met in a former coffee exchange in the harbor of Hamburg, the so called “Hafencity”.

Eclipse Demo Camp

The evening started with an interesting preview of Xtext 2.0 by Sven Efftinge (also itemis). Xtext 2.0 is rewritten from scratch and provides better performance than its predecessor. The current plan for release is about October 2008. The talk was followed by a presentation given by Matthias Lübken (akquinet it-agile) who demostrated how to use the google web toolkit (GWT) in conjunction with serverside Equinox framework. Matthias talked about some of the tweaks which are necessary in order to get the two working together and also showed a little live demo. He was followed by Stefan Reichert of Lufthansa Systems who introduced his ‘wicked shell’ for Eclipse. This handy tool started as tech-demo how to bind an external process to a SWT widget. Finally, it turned into a command line, shell, bash… integration for Eclipse – featuring code completion and history. Reginald Stadlbauer (CEO froglogic) showed how to automize GUI testing of GWT and other Java based GUIs using froglogics Squish. Squish offers scripting languages like Perl, Python or JavaScript to the user to automatize application gui testing. The tool, not an Eclipse application itself, is currently rewritten and will feature full Eclipse integration sometime soon. Finally, Frank Zimmermann (Prof. at the Nordakademie) and two of his students Stefan Tanck and Henning Banneitz showed how model-driven software development (MDSD) using oAWs XText can be used to generate adapters for SAP SI in order to transform EDIFACT messages to XML and back. Unfortunately, a talk about Spring dynamic modules with OSGi was not held, the presenter Gerd Wütherich (independant consulting) was ill.

Apart from the interesting talks, it was nice to see many familiar faces, which attended the Eclipse Demo Camp in Hamburg at the end of 2007. The Eclipse Demo Camp seems to build a community. Thanks to the organizers for enabling this great event.