Salmon LLC is pleased to announce the latest release of SOFIA, The Salmon Open Framework for Internet Applications version 2.1. SOFIA is a free, Java based open source tool set for building database driven J2EE based web applications and Swing based rich client applications.
Version 2.1 adds site map functionality, integration with Jasper Reports as well as improvements in our UI components, validation components and data access components.
"The JSP class and tag libraries offer more than 40 visual components (Button, Navigation Bar, DataTable) and 20 non-visual ones (DataStore, Internationalization, Task Scheduler). These pre-built components enhance Java and HTML development by separating HTML design from Java development. We believe strongly in separating HTML from Java in application design to ensure that applications can be debugged more easily. This separation also allows for specialization of development tasks by allowing HTML designers to design and Java developers to develop."
Downloaded SOFIA free of charge at: http://www.sourceforge.net/projects/salmon
Check out SOFIA in action with code examples at: http://www.salmonllc.com/sofiaExamples
View videos at: http://www.salmonllc.com/website/Jsp/vanity/SofiaVideo.jsp
For general information look to: http://www.salmonllc.com/sofia
Does it make sense at all to use this on a non-Windows platform?
Integration with Dreamweaver is nice, but not all uses Dreamweaver, for various reasons, and the other stuff, Eclipse and MySQL (which is included as well) runs on many other platforms.
I like the concept of Swing-like components, and the possibility of programming webpages much the same way one does ordinary applications. (Millstone also makes this possible, by the way, but not in combination with jsp/taglibs.)
Using Linux for deployment is not a problem. For development, you don't actually need Dreamweaver, but without it you need to edit the JSP tags in a text editor and can't see the visuals until you run it (which a lot of developers prefer, even on Windows). Pretty much all the tools that SOFIA use are optional, not just Dreamweaver.
That being said, using Linux for SOFIA development is still a problem (one our users have been bugging us about a lot lately). Because SOFIA integrates with so many tools, we needed an install program to deliver it and our current install only works in Windows. We've been hoping to get someone from the open source community to do a Linux version of the install, but so far no takers.
As a novice to SOFIA, I found the only way to get the code is via their install. To me this seems a little heavyweight. Could Salmon, LLC provide several download options:
1. JAR of just the binary code
2. JAR w/ source
3. Full blown install (as it exists today)
This way I can opt to take advantage of just the framework while using a different toolset (JBuilder, JEdit, Netbeans, etc).
You can get just the source, if you run the install but uncheck all the options (the Dreamweaver Plug-in, IntelliJ plug-in, Eclipse Plug-in, etc...).
We figured that by providing an install program we would make it easier for people to get stated and create less headaches (for them and for us).
If I remember correctly, you were still required to have MySQL and Tomcat installed (though it's been a little bit so I could be wrong). I thought the only way to skip the Tomcat and MySQL installation was to point to existing Tomcat/MySQL directories (meaning you already have it).
Regardless of whether you're able to un/check options during the install, I guess I'd still find it easier to provide a simple JAR or binaries or source files to download. The download time would be significantly reduced.
First, here is the arrogant answer (no offense :-), how hard can it be? Just look at JDeveloper, JBoss.
Point being: At the Oracle tech-site there is a video from a JDeveloper presentation, where they actually installs JDeveloper and builds a fully functional applications demonstrating all kinds of bells and whistles. At the beginning of the show a .Net-installation is fired off, and at the end of the show, numerous reboots and disk-shuffles later, .Net is still not up. The trick is in the installation procedure, ocourse, which is unzip. Plain and simple, and it works. You might have to edit a configuration file afterwards...
For end users, setup.exe is probably the easiest, but SOFIA is for developers. Bundling MySQL and tomcat is just overkill, what's the point? Anyone building serious applications either have MySQL and tomcat already, and want to use other versions than the ones bundled, and so on. Dreamweaver is not the only wysiwyg jsp editor around, even on linux there are alternatives. A plugin for Eclipse is nice, but one must assume that developers using Eclipse know how to install plugins.
If someone actually is willing to port the InstallAnywhere (sigh) routine to Linux it'd be nice, but I'd rather prefer a couple of zip-files (or any other archive format) and a INSTALL.TXT. At least it'd be nice not to have to download megabytes of software I already have and fire up Windows just to get the sources unpacked afterwards, and not have to figure out what to move over to Linux afterwards, and how. Also a nice small tutorial using vi and jar to build a small hellworld.war for tomcat would be nice.
All that said, SOIFA seems to be a very interesting framework, it'd be nice to use it, but I don't have the time to figure out how.
I really don't want to get into an argument about this, because it's a differce of philosophy and everyone is entitled to their opinion, but just about everything you said goes against everything we are trying to do.
To install everything framework, config files, the tools integration, sample application and sample database manually can take a half a day even if you have done it before. Also, the instructions would always be changing (as is our install), because the vendors keep changind stuff around on each different release. The install guide to manually support Intellij 2.5, 3.0, 3.01-3.05, Eclipse 2.0, 2.1, Dreamweaver 4, Ultadev 4, Dreamweaver MX, Dreamweaver MX 2004, Tomcat 4.0, Tomcat 4.1 and MySql would be a hundred pages long (we started writing it and gave up).
The install program on the other hand gets you up and running in about ten minutes.
What SOFIA is trying to do and what makes it a cut above other frameworks is that it is trying to make the developer more productive. REALLY more productive, not just dumping a bunch of source code on you and leaving you on your own, like most of them do. We belive that tools if, flexible enough, combined with an easy to use and powerful framework that helps you instead of getting in your way, will make you much more productive, possibly several times more.
I actually feel that the "vi and command line are all the tools I need" is one of the things holding the Java world back. It just takes a lot less time to do the same task if you have tools that do the work for you with a couple of button clicks.
In the "non-cyber" world this fact is obvious, but not within it for some reason. If construction workers built houses with only hand saws and shovels it would take five years to build one.
First of all, your philosophy, integrating with lots of nifty tools and servers is certainly great, and doing it in such a massive way is certainly impressive, and not very common. Even though I don't like it (because it won't run on my computer, so you might ask how I know this :-), the installation procedure is very sophisticated and you are up and running in a matter of minutes, like you say. I also share your view about using vi or notepad and the command-line for that sake. Tool support is *incredibly* important when programming J2EE. I use lots of GUI tools, including Eclipse, but not Dreamweaver (at least very rarely), and they really make me more productive.
However, my view, which I share with some, but not all, is that Windows is a hell to maintain, I use Linux for convenience. I like JBoss and JDeveloper for the same reason. So; even though SOFIA takes days to install manually (apx. the same time .Net takes to install, by the way :-), I'd actually prefer to waste that time installing and using (parts of) SOFIA manually on Linux with the IDE I prefer, rather than «saving» some hours on the Windows install that'd quickly be eaten by all other inconveniences I'd experience migrating from Linux to Windows.
So, bottom line; SOFIA is just another nice framework I'm not going to use. The philosophy does not include freedom to choose tools and platform *at all*, which I regard as important. It's a pity, because the *really* important philosophy, and area where the *large* time and resource savings lies, isn't in the installation procedure and not so much in the tight tool integration, it's in the framework architecture. I that regard SOFIA seems very interesting.
And I also wonder, how is the poor guy who takes on the Linux port of the installation procedure supposed to manage the Dreamweaver-integration? Maybe your tool-integration view isn't so strict after all? I certainly hope not :-)
Jon Martin Solaas
You may very well be right that Windows is a lot harder to maintain then Linux. I don't know because I don't develop in Linux, but I do know that I really don't have to do much of anything besides defrag my hard drive once every couple of months and reboot every couple of days when stuff flakes out.
You are also right that we should offer some choice in terms of O/S for developers. In general, that is what SOFIA is about. The use of every tool including Dreamweaver is optional. If you want to use VI and javac you certainly can. So since there is no Dreamweaver on Linux, that check box would just be removed from the SOFIA install and you would have to hand code the JSPs instead of drag and drop, which many developers prefer anyway.
But this software is free after all and supporting lots of different environments is expensive. So we are trying to keep costs down with the 80/20 rule, figuring that 80% or more of the developers use Windows instead of Linux or the Mac. For the first year an a half that seemed fine, we got maybe two or three requests for Linux as a development environment and two or three for Mac among thousands of requests for new features. But lately we've been getting a lot of Linux requests so if we can't find some help from the open source community on an install, we will probably end up eating the cost and doing it ourselves at some point.
I also imagine it would be pretty inexpensive to just put the SOFIA source code and resources directory in a zip file and put that on sourceforge without instructions, but we are afraid that most people won't be able to get it installed and it would generate a lot of support requests and that will drive up our costs.
I'm not sure why the demand for a SOFIA Linux install is increasing so much lately. Maybe Linux is is getting more popular as a desktop O/S and it's not just for servers anymore. I tried it myself as a desktop a couple of years ago and found the GUIs (Gnome and KDE) were pretty bad, slow, flakey, filled with strange behaviors and strange looking screens. So I dropped it and went back to Windows. Personally I want to click on a button to do a task, not type a command at a shell prompt and the Linux desktops kept getting in my way. At the time anyway it just seemed like their main purpose was to organize a bunch of shell windows. Maybe that's not true anymore?
Funny you should mention the 80/20 rule, because my argument essentially is; it'd still be nice to realize only 80% of the SOFIA potential, even if 20% gets lost due to lack of integration with some or all of the tools it takes to realize the full 100%. Remember, most of your competition doesn't have that potential at all. Of course, as I don't really know SOFIA, it's prefectly possible that most features really depend on those tools, and that using SOFIA without all the tool integration realized is more like using Struts, and hence one can just as well do so. I don't know. However; consider this:
1. Dreamweaver is ceartainly state-of-the art html editor with pluggable support for mostly anything. However, not everybody use it, and, like you write, it's not required for development on SOFIA either.
2. MySQL: Even if a specific version is required, it's perfectly possible to just make that a requirement for installation. Making it part of the installation is convenient for some, for others it's not.
3. Tomcat: Same argument as MySQL; If a special version is required, I'd rather prefer to install that version on my system manually, before installing SOIFA, the installation routine could perform all the complicated integrations needed. I don't want the SOFIA tomcat installation in addition to my own.
4. SOFIA developers are not end-users. I do not know at what level SOFIA integrates, but if it's just a matter of configuring a MySQL datasource, and perhaps populating a sample/tutorial database (that only some users will look at), I suspect many developers might get along just fine. When it comes to Tomcat, well, I do not know how you integrate with Tomcat either, but if it's all about localization of tomcat jar-files, installation of sofia.jar and deployment direcrories, this really should be part of any developers skills. Still, the thought of letting the installation procedure manage all this, is appealing. I must admit that.
5. When I screw up, I have no clue how to correct stuff when the installation procedure is fully automated. Maybe a re-install will save me, but maybe I could have corrected everything just by copying a jar-file or something. When it comes to deployment; no one in his right mind would deploy a critical application without knowing how the database and web-container integration works.
6. Making a perfect installation procedure certainly relieves you of support issues, but instead you have Linux users like me bugging you :-) Selling support is a well-proven OpenSource business model. So a perfectly valid argument would be that SOFIA provides freedom from commercial support needs, but not from platform. What I'd like is the freedom to choose my own means of support. If I had that, I *wouldn't* bug you, but instead other, more experienced, SOFIA users, until I became one myself. And in the process I'd become more and more stuck in the community of experienced and inexperienced SOFIA users helping each other out, and also sharing ideas and general SOFIA knowledge. Today the SOFIA installation procedure is so smooth it almost doesn't show up on Google. Good or bad?
The Linux vs. Windows discussion boils down to personal preferences. It's only recently Linux has become a good platform for Java and Java development. Today KDE and Gnome work well. Finally. Java performs better, much thanks to RedHats threading contributions to the kernel. Funny enough, now that RH has discontinued it's free Linux line (or, renamed it to Fedora if you want) they also recommend Windows for the end user.
A good way of getting help for a Linux installation procedure from the Linux community would be to make SOFIA available to Linux users. Most of the other messages here ask for jar-packed SOFIA binaries and sources. Not to mention how useful the script that InstallAnywhere executes would be ... Anybody that really want to help on this issue ofcourse *can* install on a Windows box and go from there, but it'd be a very time-consuming job to detect for instance any manipulations of the MySQL and Tomcat installations, and frankly it doesn't really seem like this kind of help is wanted when *everything* to make it work is unavailable on the platform in question.
Well, 'nuff said, It's very nice of you to engage in this discussion. It's not hard to see that the level of integration with advanced tools SOFIA provide has a large value in itself and that only limited resources for support can be put into a free framework.
Jon Martin Solaas
Thanks for the feedback. I think this is a great discussion also and we will consider all this stuff for our future releases. You can always count on the server side to get a spirited discussion going :-).
Just to clear up some of the fine points.
1) SOFIA can be used as as stand alone framework, just like Struts (Linux install notwithstanding). Even as just a bunch of source code it's still better then Struts because our paradigm is more complete, easier to learn and work with and requires less code for the same tasks.
2) A pile of source code is where most open source tools stop, but we didn't feel that was enough. One of the things that is extremely well done in the Microsoft world is development tools. Visual Basic, Powerbuilder, Delphi, Visual C were all great tools before Java even existed. For some reason, the Java development tools took years to catch up and in many ways are still behind what has been available on Windows for years. That's why we did SOFIA in the first place. We wanted to do enterprise Java with good tools and couldn't find any. So we assembled and integrated a bunch of them ourselves over the years and then realized the collection was as good or better then anything out there. I still don't understand why it has taken the Java world so long to catch up. The only thing I can think of is that the philosophy of "all I need is VI and a command prompt" has really held stuff back. I think that's what holds Linux back as a desktop operating system as well.
3) None of the tools SOFIA uses are required, except that they turn the bundle of source code into a full featured multi-vendor integrated development environment for Java. But we know everybody develops in a different way so just about everything is optional. For example you don't need MySql. You can use SOFIA with a dozen database engines. But we want people to have working examples right out of the box because picking them apart is the best way to learn a framework like this for most people. For that we needed a sample database and for that we needed an engine to run it on. We picked Mysql because it was open source, free, and easy to use. So you need MySql so you can run the example application, but not for your own SOFIA application. Most of our projects use one of the enterprise engines like Oracle or Sybase. Same is true for web severs. You can deploy to lots of them, but we wanted one we could embed inside the IDE. We picked Tomcat for the same reasons as MySql, but again you don't need it. Some people use Weblogic for development and some use Tomcat, but after that you can deploy to, Resin, Orion, SilverStream, Websphere, Tomcat, Weblogic, etc...