Some current favorite technologies are listed below. Please send me 10 netbooks optimized to sweetly
sing this software stack, and I will send you $10 each plus the cost of the netbooks.
And hey, if you make it all work under Linux on JDK 1.6 you get $11 each. That's my opening bid!
Open Source Java unless otherwise noted:
- Jena - teh awesome. Really, people. Call off the grubvython imperative wankfest and use teh RDF.
I'm sorry, I just don't know how to be nice about this anymore. (Ahem, this is called joking).
Everyone not using RDF is just farting code methane, for RDF is the kangaroo of information
technologies! (Except for yer regular high volume ordered collections, e.g. large dense matrices as
opposed to sparse ones, which you are welcome to still keep in SQL / CSV. After all, I'm not crazy,
right?). For storage we use Jena's SDB, (with MySQL or other), our own simple Peruser Quad layer,
and lots of files in Turtle and RDF/XML. We are looking for a chance to catch up with the Mulgara
native RDF store project, after some positive experience with Kowari many years back. - Protege ontology editor - have I mentioned this tool before? Oh, I have a few times here and there?
Alright, then. 'Nuff said. If you like the Eclipse GUI plugin approach, then use commercial TopBraid
instead; it's powerful. - Scala - Need scalable computation? Oh, you do! Well, then use this deeply integrated functional
extension to java. Everything you love about Java and the JVM, plus:- Function literals, closures, currying, and partially applied functions.
- Strong typing enforced at compile time, but types are inferred by compiler whenever possible,
(thus sparing us the turgid Java syntax used to instantiate generics, e.g. List<Thing> x = new ArrayList<Thing>();) - Powerful "match" keyword matches on both type and value, somewhat similar to a Horn clause.
- Keywords identify variables+fields as mutable or immutable.
- Multiple (implementation) inheritance via traits.
- All scopes (package, class, function) are completely nestable and flexible.
- Singletons are represented cleanly, other static methods become explicit functions.
- XML is directly embeddable in program code (thus turning the tables on the JSP monstrosity)
- Concurrent actors provide message based threading at language level
So, it has the same (low) impact as using a java jar, but you're programming in a higher level
language. Odersky, Spoon, Venners Programming in Scala is a groovin introduction, focusing
on practical use and leaving theory mostly implied. - JBOSS Drools 5 - expert system impl. with forward chaining RETE algorithm for java-centric BPI.
We really prefer RDF inference (Jena, Pellet, etc.) but for object diehards in soft-realtime ping-pong
decision environments, the Drools is next best. Warning: documentation of the DRL rule language
itself is gappy. One must experiment to learn the ropes. I hope to contribute to those docs at
some point. Tangentially related: We are evaluating J-ActR for some upcoming work. - JScience and Javolution - Snazzy approach to firmly grounded full performance computation for
realtime and scientific computing in Java + native code where needed. The Polynomial (combined
with Apache Commons Math optimizer, because ojalgo is incomplete) and Struct + Union classes
(Java class == C struct!) are my favs. - R (native code) - statistical computing suite - one of very few non-Java tools that we embrace.
Open source, of course. GNU Octave (native code) is free Matlab-esque tool, otherwise in the
same category as R but with smaller community, AFAIK, and we use it less than we use R.
Our big design choice these days is often a variation on "bridge to R/Octave or push forward with
the java math approach in #5 above?"). Some java math/simulation environments like Repast,
MASON, NetLogo, JMathLib offer bridges to R or Octave. - Flex 3 - Our WebGUI tool of choice for the last 18 months or so. We code MXML + actionscript
directly, without Flex Builder. Has replaced OpenLaszlo for us, but we still give props to those
dudes. The JavaFX thing just hasn't grabbed me yet. Should it? But hey, if you really want to
get all crazy with the signal-processing video animation, then you can use Processing! - Pentaho Data Integration (kettle, pan, kitchen) - sweet data integration design/coding/execution
tool. Part of the comprehensive Pentaho open source BI stack: Mondrian OLAP, data mining,
Weka machine learning integration. - Saxonica - XSLT 2.0 implementation, running nicely under both Pentaho and Cocoon.
- Cocoon - Still in use for most of our production web pipelines. Now Spring based, yippee! We would
like to help move towards compliance with XProc XML Pipeline spec. - eXist - Still our favorite XQuery database, still integrates nicely with Cocoon. Shazam! Would like to
play with MonetDB and Sedna (both native code XQuery impls) sometime, probably when we are
stranded on a island of Java haters, perhaps as part of a TV show. - Metro - Web Services stack. We use it inside Tomcat, and it is part of Glassfish, which is nifty
enough, along with OpenESB. Apache Axis is still fine, too, and interoperates reasonably well with Metro. - XStream - flexible serialization of Java to/from XML.
- Netbeans 6 - first Java IDE I've ever liked. For me it's much better than Eclipse. Nice integration
with JavaDB (i.e. Apache Derby) and Glassfish . - MySQL desktop tools - (native code) the Query Browser is pretty darn awesome.
- Stylus Studio - The only commercially licensed tool I still use (butcept windoze), because I got a free
promotional license through XML Austin. Half the time I just use JEdit or vim for XML, anyway. I am
just not an emacs guy. Deal with it! - Cygwin, PuTTY, OpenOffice, Firefox, Thunderbird, (all native code) a few open security tools,
...and of course our own Peruser stack. Finally, Virtuoso, Prova, and OpenCyc are all still close to my
heart, but sadly haven't been in the mix lately. Would like to play with sometime.
There you have it. Everything runs great on a commodity $600 windoze laptop (hint: We need 2G of
high speed RAM before we even consider the CPU specs), or on a linux server (except the GUIs, natch),
with zero additional cost and zero proprietary code (except the Stylus Studio in #15, which is an Editor/IDE,
and not part of the deployed runtime).
Finally, since I am in the mood to list my favorite everything, and at the risk of an unnecessarily brutal
frankness, I feel I should also say that Achewood, Wonkette, The Poor Man, and Sadly No, are all simply
grand, just grand. And lo, here's a promising new comedy blog, Indigulous. We like the cut of its jib!
Nice collection of technologies you list here: I've been using Jena, Scala, Netbeans, OpenLaszlo, Flex, Processing, OpenESB and a few others. Have been thinking of a small framework integrating Jena/RDF, Scala with OpenLaszlo, if I ever get the time to do that.
Posted by: Raju Bitter | 2009.09.13 at 05:08 AM