macwidgets - da ich ja mit Scala, Clojure, Jython und anderen JVM-basierten Sprachen spiele derzeit, sind diese Java-Widgets ganz interessant, da sie dem doch recht optisch mageren Swing ein bischen Mac-Look (leider nicht unbedingt feel) einbringen.
java - 1.10.2004 - 15.10.2009
JAD Java Decompiler Download Mirror - weil ich da letztens nach suchte.
django-jython - weil ich es eventuell für ein Firmenprojekt gebrauchen könnte.
The deep heap: Ghost in the Java virtual machine - sehr interessanter Artikel über JVM Performance in Bezug auf Speichernutzung und Garbage Collection und Compaction. Auch ausserhalb Java interessant.
screamyGuy - Random Acts of Programming - interessante Projekte mit Processing.
Jython 2.5 - möglicherweise noch in diesem Jahr? Das wäre fantastisch. Python ist bei mir immer noch die bevorzugte Sprache, und die JVM-Welt öffnet grosse Mengen interessanter Libraries (die interessanten stammen üblicherweise nicht von Sun ...) und Interoperabilität mit Java-Programmen, was es auf der Arbeit einfacher macht, Python zu platzieren.
Django on Jython: Minding the Gap - wow. Es nähert sich. Und als Nebeneffekt wird Jython damit näher an aktuelles Python rankommen. Cool!
JLine - sowas wie readline, nur halt für Java.
Mobile Processing - und hier dann die Variante von Processing, die Applikationen für Mobile Java Geräte (Telefone etc.) erstellt.
NasaWorldWind in Processing - und hier dann die beiden vorigen Links verbunden. Navigierbare Erde aus der interaktiven Java-Umgebung Processing aufrufen.
Processing 1.0 (BETA) - interessantes Projekt das mit Java das macht, was man früher mit Logo gemacht hat - interaktive Grafik-Programmierung mit guter Ausstattung an einfachen Libraries. Und wie Logo damals auch schon, ist auch das hier für weitaus mehr als nur Spielereien geeignet. Bücher gibts auch.
World Wind JAVA SDK - die NASA-Konkurrenz zu Google Earth als einbettbare Java-Bibliothek.
Project Wonderland - eine 3D-Welt-Software unter GPL von SUN. Client und Server natürlich in Java. Klingt aber von den Ansätzen her sehr interessant - Content wird derzeit aber nur über X3D-Importer ermöglicht.
Project details for leJOS - jetzt auch für den NXT. Macht direkt Laune, andererseits haben Legobasteleien einen Nachteil: man muss sie wegräumen, wenn man nicht ständig drüber stolpern will ...
JPC - Computer Virtualization in Java - ein PC Emulator in Java. Strange.
LibSecondLife-Java - eine Portierung der SL-Protokolle nach Java (bisher gabs ja nur die in C# geschriebene libsecondlife Geschichte). Und nicht jeder hat oder will Mono installieren ...
KETTLE - Datawarehousing mit Open Source. Hier ein Datentransformator mit GUI-Job-Editor und Batch-Job-Executor. Klingt ganz nett.
Password Safe - von Bruce Schneier. Die Java-Version 0.5 ist mit der Maemo-Version kompatibel.
Apples WebObjects mit neuen Lizenzbedingungen
Apple hat die Lizenzfragen zu WebObjects geklärt - Deployment auf Linux-Kisten ist jetzt auch ganz normal erlaubt. Damit ist die XCode-Umgebung mit WebObjects jetzt also komplett von Entwicklung bis Deployment Freibier.
Lebende Daten
Komischer Titel, oder? Naja, mir ist einfach nur was aufgefallen bei der Beschäftigung mit Webframeworks und anderen Anwendungen, speziell im Ruby und Pyhton Umfeld. Und zwar die Art und Weise wie Minidaten gespeichert werden und wie zum Beispiel Konfigurationsdaten gehalten werden.
Im Java-Umfeld gibts da eine Inflation von XML-Mini-Languages - Berge von toten Daten. Tot deshalb, weil diese Daten eben nur im XML-Format leben und nur über XML-Werkzeuge bearbeitet und verändert werden können - habe ich zum Beispiel sich ständig wiederholende oder algorithmisch beschreibbare Konfigurationsblöcke (z.B. einen Berg von sich ziemlich ähnlich sehenden URL-Mustern für ein Webframework), kann ich diese nur über XML-Werkzeuge generieren - z.B. mittels XSLT aus einfacheren Formaten generieren. Oder ich schreib mir kleine Tools dafür.
In Ruby sieht die Situation ähnlich aus - nur das da statt XML dann eben YAML genommen wird. Letztendlich ist das aber auch nicht besser - die Konfiguration ist immer noch ein totes File.
Aber sowohl im Python-Umfeld als auch bei diversen anderen dynamischen Sprachen gibt es eine gute Alternative dazu: nimm einfach ein Modul in deiner Programmiersprache. Denn zum Beispiel Pythonmodule leben - ist die Struktur komplexer, aber teilweise repetitiv - einfach eine kleine Python-Funktion schreiben die bei der dynamischen Erstellung der Config hilft. Soll die Config teilweise aus Datenbankinhalten kommen - einfach eine Python-Funktion schreiben die diese Daten zur Laufzeit aus der DB liest und in die Config einmischt. Lebende Konfigurationdaten eben.
Natürlich kommen so Sicherheitsprobleme mit ins Spiel - wir wollen ja nicht den PHP-Fehler mit dem ewigen eval wiederholen. Was dazu also dringend notwendig wäre, wäre eine saubere Sandbox für solche Module. Leider ist genau da in Python ein massives Loch in der Implementierung. Es gab früher mal die Bytecodehacks, die auch wiederbelebt wurden - aber das sind eben nur Hacks. Auch die Methode mittels eingeschränkter Imports und Proxy-Objekten eine Scheinsandbox aufzubauen wie es Zope macht ist nicht der Weisheit letzter Schluss.
Perl bietet hier - wie bei allen Sicherheitsfeatures in Perl üblich wird das natürlich von fast keinem Projekt verwendet - eine sehr saubere Methode über die safe execution. Man kann bis ins kleinste hinein reglementieren was der Code in einer solchen Sandbox darf - und damit ist eine Konfiguration über Perl-Modul definitiv besser abzusichern als in Sprachen ohne so ein Konzept.
Java selber hat natürlich ein ziemlich ausgefeiltes Sicherheitsmanagement - zwangsweise, es soll ja auch in Browsern mit sehr stark beschränkten Rechten laufen. Dieses Security-Modell ist auch für Anwendungen nutzbar und könnte zum Beispiel für Servlets oder eben auch Java-Configs zum Einsatz kommen - vor allem da man mit Java ja auch problemlos Files zur Laufzeit übersetzen und dynamisch laden kann. Erklär mir jetzt mal einer warum die Java-Leute so fixiert auf XML sind, wo sie doch die besten Grundlagen für sichere lebende Daten haben ...
Das Safe-Modell von PHP ignorieren wir hier mal geflissentlich, denn das ist ein Sekt-oder-Selters-Modell - entweder läuft jeder Code unter safemode, oder garkeiner. Was wir bräuchten wäre aber eine selektive Aktivierung unterschiedlicher Sicherheitsklassen für einen einzelnen Codeblock oder Modulimport (ok, Modulimporte hat PHP auch nicht, nur Includes - ich sag ja, wir ignorieren es einfach mal).
Bisher kann man also bei Python nur dann mit lebenden Konfigurationen arbeiten, wenn man sich sicher ist das die Konfigurationen nur von Usern ohne böse Absichten bearbeitet werden. Django zum Beispiel benutzt nur lebende Konfigurationen - es wäre daher eine ziemlich dumme Idee, würde man z.B. die Konfigurationdateien bei zentral gehosteten Anwendungen über das Web editierbar machen.
Wir brauchen dringend eine saubere Sandbox für Python. Ich glaube sogar das wäre ein wichtigeres Teilprojekt als die diversen syntaktischen Erweiterungen die immer wieder angegangen werden.
Jython 2.2 in der Mache
Die Jython Webseiten geben noch nix her, aber in der Mailingliste gabs vor ein paar Tagen eine Info das eine neue Alpha für Jython 2.2 raus ist - und zwar diesmal (war ja schon Ende 2004 mal so weit) eine die funktioniert. Viele Features der neueren Python-Versionen sind drin, auch Generatoren/Iteratoren. Von daher ist es nicht identisch mit Python 2.2, sondern eher ein gutes Stück auf den Weg zu Python 2.3 von den Features her. Da der Entwickler mit OS X arbeitet und dort entwickelt ist es relativ problemlos dort zu installieren.
Zur Installation, da das nirgendwo explizit erwähnt wird:
java -jar [jython .version.elend.langer.name.jar]
Dann kommt ein grafischer Installer der alles auf die Platte kippt. Dann in dem Zielverzeichnis noch zusätzlich folgende Befehle eingeben:
chmod 755 jython
chmod 755 jythonc
Dann sind die beiden (jython ist der Interpreter und jythonc ein Compiler) auch aufrufbar und es kann losgehen. Beim ersten Start von jython wird eine ganze Reihe von Systempaketen aktiviert, also nicht wundern über die vielen Meldungen vom sys-package-mgr.
Wer Jython nicht kennt: das ist eine Reimplementierung von Python auf der Java Virtual Machine. Dadurch lassen sich sehr elegant alle Java-Libraries benutzen und durch die interaktive Shell von Jython lässt sich auch mit Java-Klassen interaktiv spielen. Sehr schön um mal schnell Sachen auszuprobieren. Aber natürlich auch sehr schön um zwar die Portabilität von Java zu haben, aber nicht die kranke Sprache
Und es ist halt einfach witzig so Sachen wie die hier zu machen:
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 mit Browsersteuerung
Kollege hat ein ziemlich geniales Teil gefunden: SSL Explorer, ein kleiner https-Server der mit einem Java-Applet im Browser zusammen ein VPN realisiert. Und zwar werden beim Appletstart (der bestätigt werden muss, da das Applet zusätzliche Fähigkeiten braucht) Tunnelverbindungen über https aufgebaut und darüber dann diverse Anwendungen integriert. Zum Beispiel kann man dann per Klick auf einen Link eine VNC-Verbindung zu einem internen Server aufbauen, oder über Webformulare im lokalen Windows-Netz browsen, Files transferieren oder z.B. per SSH auf Linux-Server hinter der Firewall zugreifen. Und das ganze funktioniert mit einem einfachen Java-fähigen Webbrowser - ich habs zum Beispiel mit dem Safari getestet, klappt problemlos. Ganz ohne extra zu installierende Client-Software. Ideal für Roaming-User die nicht immer ein eigenes Gerät mit dabei haben.
Achso, und das ganze ist dann auch noch unter der GPL.
WebObjects 5.3 und Linux?
Apple releases WebObjects 5.3 Update:
Deploys to virtually any J2EE server or the WebObjects J2SE application server
Also los - wer hostet die erste WebObjects-Anwendung unter Linux in einem OpenSource J2EE-Server?
WebObjects Bestandteil von XCode 2.1
In den WebObjects 5.3 Release Notes gesehen und gleich mal nachgeguckt: WebObjects ist jetzt Bestandteil der XCode 2.1 (für ADC-Member verfügbar) Distribution. Ich hab mir die über 700 MB mal gezogen und nachgeguckt: ja, da ist ein WebObjects.mpkg drin. Schon seltsam, denn bisher war WebObjects ein nicht ganz billiges Paket - ist jetzt der ganze Einsatz frei, oder braucht man für die generierten Anwendungen noch eine irgendwie geartete Runtime, die dann wieder Geld kostet?
Borland open sources JBuilder - huch. Da hatte ich jetzt so nicht mit gerechnet - im Prinzip ist es ja sowas wie Aufgabe. Ob Borland ohne JBuilder noch was hat das sie über Wasser halten kann?
Bistro Intro ist eine Smalltalk-Variante die auf der Java VM läuft. Kannte ich bisher noch nicht.
SISC - Second Interpreter of Scheme Code
SISC Scheme ist ein in Java geschriebener, sehr vollständiger Scheme-Interpreter und Compiler. Besonders interessant: es gibt ein continuation-basiertes Webframework dafür.
Weitere interessante Eigenschaften sind die gute Integration in die Java-Welt durch das Java-Scheme-Interface. Im Prinzip stehen alle Bibliotheken aus der Java-Welt auch in Scheme zur Verfügung.
SISC Scheme unterstützt auch SLIB (eine Erweiterungsbibliothek für Scheme mit vielen nützlichen Modulen) und diverse SRFIs (Scheme Requests for Implementation - der formale Weg zur Erweiterung der Scheme Sprache mit Standardmodulen).
Das Studs MVC Framework ist eine Portierung und Erweiterung des Java Struts Frameworks nach PHP. Dabei sind Frameworks die erstmal eine J2EE-ähnliche Grundstruktur für Servlets in PHP abbildet. Für mich klingt das natürlich nach Den Teufel mit dem Beelzebub austreiben
Ich hab noch nie verstanden was die Tatsache das ein Java Applet eine Signatur hat mit Vertrauenswürdigkeit zu tun haben soll und warum es dann erweiterte Rechte haben soll. Das ganze Konzept der signierten Applets mit erweiterten Rechten ist meiner Meinung nach eine dumme Idee - auch wenn der Anwender gezielt darauf hingewiesen würde, was das bedeutet (eben die erweiterten Rechte) - auf Grund welcher Fakten soll er entscheiden ob er dem Applet traut?
Ich wusste garnicht das der SmartEiffel The GNU Eiffel Compiler mitlerweile auch nach Java Bytecode compiliert. Könnte man ja vielleicht auf dem Mac zusammen mit der Java-ObjC-Bridge benutzen um Programme dort zu schreiben und mal wieder ein bischen mit Eiffel zu spielen.
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