|
What is it?
It is all of these things:-
What isn't it?
It is not a replacement for Applets, or any other fat downloaded application concept.
In use. Thicky is a thin as you choose to make it. One thicky deployment could be groovy pages only, another could have some common functionality in jars with smaller individual pages.
Contrary to popular belief, it is not going to yield pages that are significantly larger than their HTML equivalents.
What is possible?
Why is this important?
Tim Berners-Lee's HTML was originally a great markup language for static documents. Since its 1990 debut, there have been numerous extensions by various groups, but there remains a glass ceiling on its capabilities.
A declarative markup language like HTML, is all about simplification. i.e. a developer finds it very easy to make a simple web site.
The glass ceiling
Imagine you've been asked to code a web application have a field on a web page that is a drop down containing the words apple, orange, and banana. It works perfectly, but your customer has asked you to render an image of the fruit to the left of the word inside the drop down. You try to suggest other things like having a javascript generated picture of the currently selected fruit next to the field, but you customer insists in on fruit-piccy in drop-down. You groan and embark on some complicated pre-rendered pictures os fruit with their names, and some CSS, dynamic HTML , rollover thing that looks like a drop-down, but is not. With that simple request, you've had to abandon the simple declarable field for drop down from HTML's toolkit, and code some magical javascript that transcends the glass ceiling. The problem with declarative forms is that they typically have these problems of capability. We note that for the new solution we have broken out of the declarative nature of HTML with a <script> tag and engineered part of the solution in a procedural language (javascript).
Coming back to simplification, if a markup or scripting language does not let you reduce complexity and increase speed/ease of use, then it is pointless (one of many contributions from Emerson Clarke)
Enter Groovy
Groovy (as I've mentioned many times), is on one axis the convergence of declarative and procedural forms, and on the other axis its sits equally well as interpreted or compiled. Thus if a page could be marked up in Groovy, and you met this same need, you could break away from the declarative comboBox statement and add procedural functionality without substantially changing technologies. If your customer wants a widget to have transparency/layered/movie/sound-effects or simply a different look, it is easily possible in the same technology. In the hypothetical case above, using groovy you'd just add a CellRenderer to the drop down. a few lines of code only.
The convergence of declarative and procedural is a very key to the success of groovy in this role. The currently crop of client and servers-side technologies fail to bridge this gap. Namely, ASP, JSP, PHP, Servlets, JavaScript and HTML.
Or put it another way, nobody ever wrote a word processor that uses HTML-form <textarea/> elements. It would suck.
Where is the magic?
There is very little. Groovy/swing is already part of Groovy as are the declarative enabling builder classes. Velocity to make groovy/swing scripts has also done already. What is novel is the browser paradigm that enables a page by page rendition of a client-side experience.
Show me some pages..
See for yourself - in cvs
How do I play with Thicky?
Simple demo
Download the 0.1 Jar from here
Invoke it with this command:
java -jar thicky-0.1-uber.jar http://thicky.sourceforge.net/groovy/Page1.groovy
java -jar thicky-0.1-uber.jar http://eob.sourceforge.net/thicky/groovy/Page1.groovy
From CVS
Via the homepage
Via the WebCVS
There any many things being worked on presently, but the easiest thing to do is ignore the Maven script, crank up IDEA, load jars from Groovy (beta 4) and ASM (1.4.1), PicoContainer (release candidate), and launch org.thicky.client.standalone.Standalone. As you click on the button in the simple form presented, the page you click on will be replaced (and garbage collected) for another that is freshly retrieved from the file system (or web server). Take a leap of faith that the frame could actually be a Mozilla/IE browser frame. The pages are not linked to each other in a hard sense, though some cookie-like facility will be there for simple storage. As it happens the parallels with a HTML browser are many.
Where is the competition?
Well Droplets are one. So is Microsoft's XAML, (Xamlon Inc's Xamlon delivering this today).
What might help us finish the project?