|
|
|
|
|
|
Sofia Forum
|
|
|
|
Click the link below to access the Sofia Forum
|
|
[
Sofia Forum
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SOFIA has actually been around for quite some time. It was started several years ago as a toolbox for Salmon's Enterprise Java consulting practice. At the time Salmon's main business revolved around Powerbuilder, the client/server Rapid application development tool by Powersoft/Sybase. We wanted to shift the practice and start building Java based web applications for our corporate customers instead of client/server applications and the first order of business was to find a RAD tool we could use. Much to our surprise, we couldn't find anything but vaporware. Some tools were starting to emerge, but they were poorly designed, loaded with bugs and completely proprietary. The standard J2EE stuff was in flux at version 0.8 and IBM had a different one from Sun so we decided to stay away from that until the dust settled. The servlet spec looked pretty solid, but there wasn't enough there to really do an application (unless you like having a million out.println statements).
It became apparent that in order to do what we wanted, we would first need to build our own tool. We wanted to use a lot of the concepts we found in other RAD tools as basis. The first cut of SOFIA included: smart GUI components, event driven programming, and a DataStore data access component. We had just about everything you would find in a full-fledged RAD tool except for a visual GUI painter. Instead our screens were built in a manner similar to Swing or the Java ATW. The developer would manually instantiate each GUI elements as a Java object and place it on a page using container objects. Even without the GUI painter, we ahead of any other web based Java tool out there and so we were off and running.
Early on we stayed away from JSPs even after the spec firmed up because we really disliked mixing Java code with HTML in-line. That is until they came out with custom tag libraries. We saw this as an opportunity to improve the SOFIA a lot. Any AWT or Swing programmer knows that creating a bunch of components and laying them out on a page takes quite a bit of code and that was true with SOFIA as well since it followed the same model. It's much easier to code a page in HTML with tags than with Java code. So we built a JSP tag library wrapper around our GUI components. That improved our productivity dramatically. But then we went a step further. We realized that potentially building a GUI painter that generated tags was much easier than a GUI painter that generated code. Somebody even noticed that the HTML design tool Dreamweaver, could be customized to work with custom tag libraries. We jumped on this and a couple of months later we had a WSYWYG drag and drop environment for our tag library. Now we started to get really, really productive.
Until that point, we were using IBM Visual Age Java for our development environment. Although it has many flaws, we considered it the best tool in a pretty pathetic field of offerings by the various Java vendors. But then IBM pretty much abandoned Visual Age. So we went shopping around for another environment and were once again disappointed by the offerings. It had been several years and we had done many projects with SOFIA all the while expecting the Java community to catch up and produce a good commercial RAD tool we could use, but still there wasn?t any. But we did finally find a few decent IDEs at least. The two that we liked were IntelliJ IDEA and Eclipse. Both of these tools were very nice for developing Java code, but neither was a rapid application tool for building web based Java applications. So we combined IntelliJ and Eclipse with Tomcat, SOFIA, Dreamweaver and some homegrown utilities. Now we had two really great environments for writing the Java code, a really great WYSYWG painter for the JSPs, and a solid foundation to code from all integrated together. We started cranking out web code like we did in the Powerbuilder days.
We didn't actually ever plan on releasing SOFIA to the public. It was our secret weapon. But then, one of our clients asked us why we weren't using Struts by Apache. We didn't have an answer so we looked into it and found that to write the same program in Struts it takes about twice as much code as with SOFIA. And a lot of the extra code is of the mindless, tedious variety, which we really abhor. Also to get the same functionality with Struts that is built into SOFIA you have to integrate and learn a whole bunch of different open source tools, all by different developers. And after all that, you end up having to code the GUI in notepad. It didn't sound too productive to us. We started thinking that we might have something here.
Then one day we went to a Microsoft.Net Studio demo. Our first impression was surprise because it looks a lot like SOFIA (not really surprising when you think about it because a lot of the concepts underlying both are the same). Next we were upset because it looks better then any tool that any Java vendor has come up with (at least at the demo). We figured that Microsoft understands a fundamental truth that the Java vendors don?t: If you make something easy to use, people will use it. We figured that if the Java world doesn't get their act together in a hurry, Microsoft would start to win the hearts and minds of web developers and that would be it for Java. Having no desire to become Microsoft programmers we decided to release SOFIA as open source and at least do our small part in keeping Microsoft from taking over the rest of the world. And we actually do have something that even Microsoft doesn't. Like Dot Net Studio SOFIA provides everything you need to build web applications, but uses open standards, best-of-breed tools from different vendors and is open source and free of charge.
|
1-Dec-2002. Garden City, New York.
Formerly known as JADE ... it turns out that some company in New Zealand holds the trademark for the name JADE. So, rather than spend thousands of dollars trying to hold onto JADE we have decided to rename to SOFIA.
SOFIA stands for Salmon Open Framework for Internet Applications. |
|
|
|
|
|