java - 1.10.2004 - 15.10.2009

macwidgets - As I'm currently playing with Scala, Clojure, Jython and other JVM-based languages, these Java widgets are quite interesting as they bring a bit of Mac look (unfortunately not necessarily feel) to the rather visually sparse Swing.

JAD Java Decompiler Download Mirror - because I was looking for it recently.

django-jython - because I might be able to use it for a company project.

The deep heap: Ghost in the Java virtual machine - very interesting article about JVM performance in terms of memory usage and garbage collection and compaction. Also interesting outside of Java.

screamyGuy - Random Acts of Programming - interesting projects with Processing.

Jython 2.5 - possibly still this year? That would be fantastic. Python is still my preferred language, and the JVM world opens up large amounts of interesting libraries (the interesting ones usually don't come from Sun ...) and interoperability with Java programs, which makes it easier to place Python at work.

Django on Jython: Minding the Gap - wow. It's getting closer. And as a side effect, Jython will get closer to current Python. Cool!

JLine - something like readline, but for Java.

Mobile Processing - and here is the variant of Processing that creates applications for mobile Java devices (phones, etc.).

NASA World Wind in Processing - and here the two previous links combined. Call the navigable Earth from the interactive Java environment Processing.

Processing 1.0 (BETA) - interesting project that does with Java what you used to do with Logo - interactive graphics programming with a good set of simple libraries. And just like Logo back then, this is suitable for far more than just playing around. There are also books available.

World Wind JAVA SDK - the NASA alternative to Google Earth as an embeddable Java library.

Project Wonderland - a 3D world software under GPL by SUN. Client and server naturally in Java. Sounds very interesting from the approaches - content is currently only enabled via X3D importer.

Project details for leJOS - now also for the NXT. It's exciting, on the other hand, Lego tinkering has a disadvantage: you have to put it away if you don't want to constantly trip over it ...

JPC - Computer Virtualization in Java - a PC emulator in Java. Strange.

LibSecondLife-Java - a port of the SL protocols to Java (so far there was only the libsecondlife story written in C#). And not everyone has or wants to install Mono ...

KETTLE - Data warehousing with open source. Here is a data transformer with GUI job editor and batch job executor. Sounds quite nice.

Password Safe - by Bruce Schneier. The Java version 0.5 is compatible with the Maemo version.

Apples WebObjects with new licensing terms

Apple has clarified the licensing issues with WebObjects - Deployment on Linux boxes is now also completely allowed. Thus, the XCode environment with WebObjects is now completely free from development to deployment.

Living Data

Funny title, isn't it? Well, I just noticed something while dealing with web frameworks and other applications, specifically in the Ruby and Python environments. Namely, the way mini-data is stored and how configuration data is handled, for example.

In the Java environment, there is an inflation of XML mini-languages - mountains of dead data. Dead because this data only exists in XML format and can only be processed and modified using XML tools. For example, if I have constantly repeating or algorithmically describable configuration blocks (e.g., a mountain of quite similar-looking URL patterns for a web framework), I can only generate these using XML tools - e.g., generate them from simpler formats using XSLT. Or I write small tools for this.

In Ruby, the situation is similar - only that instead of XML, YAML is used here. Ultimately, however, this is not better - the configuration is still a dead file.

But both in the Python environment and in various other dynamic languages, there is a good alternative to this: just use a module in your programming language. For example, Python modules live - if the structure is complex but partially repetitive - simply write a small Python function that helps with the dynamic creation of the config. If the config should partially come from database contents - simply write a Python function that reads this data from the DB at runtime and mixes it into the config. Living configuration data, after all.

Of course, security issues come into play here - we don't want to repeat the PHP mistake with the eternal eval. What is urgently necessary for this would be a clean sandbox for such modules. Unfortunately, there is a massive hole in the implementation right there in Python. There were bytecode hacks in the past, which were also revived - but these are just hacks. The method of building a pseudo-sandbox using restricted imports and proxy objects, as Zope does, is also not the be-all and end-all.

Perl offers a very clean method here - as is usual for all security features in Perl, this is of course used by almost no project - to regulate down to the smallest detail what the code in such a sandbox is allowed to do - and thus a configuration via Perl module is definitely better secured than in languages without such a concept.

Java itself, of course, has a pretty sophisticated security management system - necessarily, as it is also supposed to run in browsers with very restricted rights. This security model is also usable for applications and could be used, for example, for servlets or Java configs - especially since you can also easily translate files at runtime and load them dynamically with Java. Now explain to me why the Java people are so fixated on XML when they have the best foundations for secure living data ...

We will ignore the safe model of PHP here, because it is a soda-or-seltzer model - either every code runs under safemode, or none at all. What we would need is a selective activation of different security classes for a single code block or module import (ok, PHP also doesn't have module imports, only includes - I say, we just ignore it).

So far, you can only work with living configurations in Python if you are sure that the configurations are only edited by users without malicious intent. Django, for example, only uses living configurations - it would therefore be a pretty stupid idea to make the configuration files editable via the web for centrally hosted applications.

We urgently need a clean sandbox for Python. I even believe that this would be a more important subproject than the various syntactic extensions that are repeatedly addressed.

Jython 2.2 in the works

The Jython website doesn't provide much information, but a few days ago, there was a post in the mailing list announcing a new alpha release for Jython 2.2 - and this time (it was already this far back at the end of 2004), it's one that actually works. Many features of the newer Python versions are included, such as generators/iterators. Therefore, it is not identical to Python 2.2, but rather a good step towards Python 2.3 in terms of features. Since the developer works with OS X and develops there, it is relatively easy to install.

For installation, as this is not mentioned anywhere explicitly:


java -jar [jython .version.elend.langer.name.jar]

Then a graphical installer appears that installs everything on the disk. Then, in the target directory, enter the following commands additionally:


chmod 755 jython
chmod 755 jythonc

Then the two (jython is the interpreter and jythonc is a compiler) are also callable and you can get started. When starting jython for the first time, a whole series of system packages are activated, so don't be surprised by the many messages from the sys-package-mgr.

For those who don't know Jython: it is a reimplementation of Python on the Java Virtual Machine. This allows all Java libraries to be used very elegantly, and the interactive shell of Jython allows you to play interactively with Java classes. Very nice to quickly try things out. But of course also very nice to have the portability of Java, but not the crazy language.

And it's just fun to do things like this:


Jython 2.2a1 on java1.4.2_07 (JIT: null)
Type "copyright", "credits" or "license" for more information.
>>> import java.lang
>>> dir(java.lang.Number)
['byteValue', 'doubleValue', 'floatValue', 'intValue', 'longValue', 'shortValue']
>>> import java
>>> dir(java)
['__name__', 'applet', 'awt', 'beans', 'io', 'lang', 'math', 'net', 'nio', 'rmi', 'security', 'sql', 'text', 'util']
>>> ```

SSL-VPN with Browser Control

Colleague found a pretty brilliant tool: SSL Explorer, a small https-server that together with a Java applet in the browser implements a VPN. Specifically, when the applet starts (which must be confirmed, as the applet requires additional capabilities), tunnel connections are established over https, and various applications are then integrated over these connections. For example, you can establish a VNC connection to an internal server with a click on a link, browse the local Windows network via web forms, transfer files, or access Linux servers behind the firewall via SSH. And the whole thing works with a simple Java-capable web browser - I tested it with Safari, for example, and it works flawlessly. Completely without additional client software to be installed. Ideal for roaming users who don't always have their own device with them.

Oh, and the whole thing is also under the GPL.

WebObjects 5.3 and Linux?

Apple releases WebObjects 5.3 Update:

Deploys to virtually any J2EE server or the WebObjects J2SE application server

Who hosted the first WebObjects application under Linux on an OpenSource J2EE server?

WebObjects Part of XCode 2.1

In the WebObjects 5.3 Release Notes I saw and immediately checked: WebObjects is now part of the XCode 2.1 (available for ADC members) distribution. I downloaded the over 700 MB and checked: yes, there is a WebObjects.mpkg in it. Quite strange, because so far WebObjects was not a cheap package - is now the whole deployment free, or do you still need some kind of runtime for the generated applications that then costs money again?

Borland open sources JBuilder - wow. I didn't see that coming - it's basically a surrender. Can Borland stay afloat without JBuilder?

Bistro Intro is a Smalltalk variant that runs on the Java VM. I didn't know that before.

SISC - Second Interpreter of Scheme Code

SISC Scheme is a very complete Scheme interpreter and compiler written in Java. Particularly interesting: there is a continuation-based web framework for it.

Other interesting features include good integration into the Java world through the Java-Scheme interface. In principle, all libraries from the Java world are also available in Scheme.

SISC Scheme also supports SLIB (an extension library for Scheme with many useful modules) and various SRFIs (Scheme Requests for Implementation - the formal way to extend the Scheme language with standard modules).

The Studs MVC Framework is a port and extension of the Java Struts Framework to PHP. In doing so, frameworks initially map a J2EE-like basic structure for servlets in PHP. To me, that naturally sounds like fighting the devil with Beelzebub.

I have never understood what the fact that a Java applet has a signature has to do with trustworthiness and why it should then have extended rights. In my opinion, the whole concept of signed applets with extended rights is a dumb idea - even if the user is specifically pointed out what this means (the extended rights) - on the basis of which facts should he decide whether he trusts the applet?

I didn't know that the SmartEiffel The GNU Eiffel Compiler now also compiles to Java bytecode. Maybe you could use it on the Mac together with the Java-ObjC bridge to write programs there and play with Eiffel again.

Java Runtime Properties for Mac OS X - Tipps wie man Java in OS X aufrufen kann - auch mit abweichendem Icon

Red Robin - Jython - Jython in Eclipse installieren