Apr 08

Apache Beehive PageFlows vs. Spring WebFlow

Java, Lightweight Containers, Open Source, Tech, Web Frameworks 5 Comments »

Way back in time I worked on early releases of BEA’s Portal server. At the time they had their own MVC framework webflow, and it was a little painful to use (Remember the Rational ROSE tools for the Commerce product?).

However, that was many many years ago, and it has gotten better each release.

Now a lot of the same learning, is in place with Apache Beehive NetUI and PageFlows frameworks.

The Spring guys came out with a WebFlow component, which covers some of the same ground. How do they compare? At a high level their pro’s are:

Spring WebFlow:

WebFlow, although immature, does have an interesting goal in that it works on top of ANY web framework, and isn

Apr 08

“Please press the Square key”

British, Personal 2 Comments »

I was on a conference call to the UK today, and everyone was laughing at the instructions.

[insert stuck up english womans voice]: “Please enter your authorization code and then hit the square key

What the hell is the square key? Everyone worked out that she meant the pound sign. I know that I never called that sign the ‘pound’ sign, as it is of course reserved for our currency. I used to call it the ‘hash’ mark (not what they call it in Holland ;).

I don’t think I EVER heard a brit call it the square key!

Also, the conf call system was one that asks for your name, so it can play the part of the masters of service and claim:

“Dion has entered the conference”

One of the guys hit buttons, and indeed that worked just fine:

“BEEP BEEP BEEP BEEP has entered the conference”

Apr 07

AspectJ 5 M2

AOP, Java, Tech 4 Comments »

The AspectJ train keeps rolling. The team has announced the second milestone release:

We’re pleased to announce that AspectJ 5 M2 is now available for download at

http://www.eclipse.org/downloads/download.php?file=/technology/aspectj/dev/aspectj-1.5.0M2.jar

The changes in AspectJ 5 M2 since M1 are numerous, and the highlights are listed below.

* Full source compilation of Java 5 programs (with the “-1.5″ option)
* New Xlint warning when advice does not affect any join points (and the @SuppressAjWarnings annotation to suppress it) (-1.5 only)
* @this,@target,@args forms changed from @this(@Foo) to @this(Foo)
* Full support for annotation binding as context in @this, @target, @args, @annotation, @within, @withincode
* Declare annotation (declare @field, declare @method, declare @constructor, declare @type)
* Declare soft does not soften runtime exceptions
* pertypewithin instantiation model
* performance improvements resulting in reduced compilation times
* aspectpath has been extended to accomodate directories as well as jar/zip files
* many, many bug fixes

The AspectJ 5 Developer’s Notebook has been updated to reflect the updates. So many people have contributed ideas, suggestions, and bug reports to M2 that it’s impossible to list you all – but you know who you are, so thank you. Come 1.5.0 final we’ll put together a roll-of-honor :)

For examples of some of the new features in action check the following links:

* http://www.aspectprogrammer.org/blogs/adrian/2005/03/event_driven_ar.html
* http://www.aspectprogrammer.org/blogs/adrian/2005/03/ramnivas_on_ann.html
* http://www.aspectprogrammer.org/blogs/adrian/2005/01/making_concurre.html

and also the AspectJ 5 Developer’s Notebook: http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj-home/doc/ajdk15notebook/index.html

Thanks and stay in touch,
The AspectJ Team.

Some of these features are really great. I love the @annotation stuff, and the pertypewithin instantiation model.

aspectpath has been updated. I wish that these classpaths could be directories that CONTAIN .jar files too (as many people have wished).

Apr 07

sendMultiRefs with Axis 1.1 for .NET interop

Java, Microsoft, Tech 3 Comments »

I mentioned in the past that we were having some problems talking to a third party service implemented in .NET.

We didn’t have control over anything on their side, and in fact were using their Java proxies (which were gen’d via Axis 1.1).

This meant that we were stuck in their RPC mode, instead of using the currently blessed document/message style.

One item that just breaks, is that .NET can’t handle multiRef’s, so to make sure you are being a good client do the following:

YourNameWebServiceLocator locator = new YourNameWebServiceLocator();

locator.getEngine().setOption(”sendMultiRefs”, Boolean.FALSE);

No more multiRefs. .NET is happy.

Apr 07

Lingo: Indigo for Java without WS-*

Java, Lightweight Containers, Microsoft, Open Source, Tech 1 Comment »

Lingo is a new lightweight remoting / messaging library that smells a lot like Indigo in simple ways. The main difference is that the model isn’t baked in with WS-* XML blah.

It is cool that you have control over the messaging exchange patterns, and can do things like JMX over JMS very easily.

About Lingo

Lingo is a lightweight POJO based remoting and messaging library based on Spring’s Remoting which extends it to support JMS and support a wide range of message exchange patterns including both synchronous and asynchronous message exchange.

Current supported message exchange patterns include:

  • synchronous request-response (like RMI)
  • one way messaging (asynchronous invocation – like a JMS publish)
  • asynchronous consumption (like a JMS subscribe)
  • asynchronous request-reply (allowing the server side to asynchronously send one or more replies as the data becomes available).

You can think of Lingo as being conceptually similar to both Microsoft Indigo and JSR 181 in that it allows asynchrnous method execution, remoting and asynchronous messaging to be bound to existing POJOs (classes or interfaces) though it has no particular dependency on Web
Services infrastructure.

Lingo supports pluggable messaging bindings; the first binding is an efficient JMS implementation. Over time we’ll be adding other bindings to web services frameworks and other transports.

For more details of how Lingo works and what features it offers, see the Overview or try out the Example

Read more about the new: Lingo

Apr 06

O’Reilly CodeZoo: Trying to pen in the wilds of opensource

Java, Open Source, Tech 6 Comments »

O’Reilly has released a CodeZoo which is meant to wrangle in the wild of opensource, and let us search through and grab components that we need.

At the moment there isn’t a huge amount of data in there, but if it grows it could be quite useful.

Where I would want this site to help is in a scenario such as:

I need a Java based CMS engine that works with X, and has feature A, B, and C

I would like to then go to CodeZoo, and have information there that would help me validate my scenario. Show me what users have said about it (especially those who have implemented something on it!) and then link me to good resources.

Apr 06

Groovy JSR Hyperlinked Grammar

Groovy, Tech No Comments »

I am going through a slew of Groovy code and making sure it works in Groovy JSR.

From time to time it is nice to look at the grammar to see what is happening, and there is a hyperlinked version at: http://groovy.codehaus.org/jsr/spec/grammar.

My observations on the migration so far are:

  • Get ready to do a s/// for: |\s*(\w+)\s*| to the -> version
  • I am a fan of ‘#’ for comments, so I had to s|#|//|
  • Get ready to do some ‘def’ additions although…
  • I was surprised when a lot of scripts ‘just worked’ after the || conversion. I was surprised because I knew I wasn’t ‘def’ing all of my variables. It turns out that the current parser is fairly lax (apart from with member variables and methods), so I all of the following just works:
    aVar = "aVar"
    
    println aVar
    
    def m() {
    println aVar
    
    anotherVar = "anotherVar"
    println anotherVar
    }
    
    m()
    
    class Foo {
    def f = "letter f"
    
    def printF() {
    println this.f
    }
    
    def printG() {
    g = "letter g"
    println g
    }
    
    }
    
    fc = new Foo()
    fc.printF()
    fc.printG()
    

    The parser will get stricter though, so I will have to do def additions (I understand why, but I prefer not having the noise)

  • I spent some time breaking things to see what errors came out. For the first time ever, I actually was pointed to where the problem was (with the correct line in script). Now I just wish they could surpress the huge stacktrace that occurs and just tell me the problem. Let me give a -option to see all of the evil crap.
  • I know that I haven’t hit the hard snags yet though…. so we will see!
Apr 06

Groovy 1.0 JSR 1 Released

Groovy, Tech 1 Comment »

James and co. have released the first JSR based Groovy: groovy-1.0-jsr-01.

Now is the time to go through a bit of pain ;) and migrate old groovy scripts over.

Notable Changes

  • Introduction of a def keyword
  • Parameter separator in the closure syntax
  • Safe navigation
  • Property keyword
  • Array creation
  • float and double notation
  • Explicit method pointer syntax
  • No ‘do
Apr 06

Masters of Doom

Books, Games, Tech 2 Comments »

I was recently asked about the books that I would recommend to peers. I certainly have some of the usual fare (Pragmatic Programmers, Mythical Man Month, Fowler, etc) but I had one different kind of book.

I grabbed Masters of Doom which is a biography of Johm Carmack, and John Romero, who created first person shooters at id Software.

It is such an easy, fun read. I completed it in one sitting. I couldn’t put the book down.

I have a good friend from college who worked with Graeme Devine (who is in the book) at Trilobyte (who made 11th hour, 7th Guest, …). He told me a lot of things that ended up in the book, and always gave me a good insight into the gaming industry.

And what a strange one it is. These two kids, revolutionalized the industry. The book goes into the technical challenges back in the day, and how Carmack always had a solution (after a lot of research).

Developers often work well in strange hours. I know that personally my coding gene only kicks in at 11pm. Carmack took it to the next level. He slowly used to come in to work one hour later (day one: 10am, day two 11am, etc). Finally, he settled in, working 4pm to 4am! I think that was the only way he could stay sane with some of the characters in the office :)

I recently read the book on the 2nd coming of Steve Jobs. It was interesting to think back to that as I read this book. John Romero and Steve Jobs seemed somewhat interchangable. Both larger than life. Both ‘gods’ in their worlds. Both making as many crap decisions as good ones. They also both follow their hearts.

Why would a programmer want to read this?

It isn’t about learning new design patterns. It is about getting inspired. After reading the book I was ready to take on the world. I was ready to open up IntelliJ and start coding.

It was also interesting to see the book paint Madison as an ice cold place that they couldn’t handle for more than a few months ;)

Apr 06

Personalized Google vs. Hiding from Google

Google, Tech No Comments »

Angsuman Chakraborty is putting together the pieces of recent Google projects and acquisitions (like every other analyst) in Is there a method to Google

Loading...