3. Helma?
JavaScript Web Application Server
Open Source – BSD-Lizenz
Mozilla Rhino zum Interpretieren
Rhino ist in der J2SE 6 fest verankert
Helma ist anders.
4. Helma ist anders!
Prototyp-basiertes Objekthandling
Ganz grob gesagt: Prototype = Klasse
Prototypen bestimmen Applikations-Layout
REST-konform - jeder Ressource wird eine
URL zugeordnet.
/photographers/leibovitz/
6. Helma & Java
Rhino ermöglich Zugriff auf Java-Klassen
var url = new java.net.URL('http://orf.at‘);
var host = url.getHost();
var bigInt = new java.math.BigInteger('1000000‘);
res.write('Next prime: ' + bigInt.nextProbablePrime());
Zugriff auf alle möglichen Java-Libraries!
Captchas, Chart-Rendering, ...
7. Request-Handling
Im Prototypen eine Funktion:
ProtoName.prototype.methodenname_action()
Wird gemapped auf: /objektId/methodenname
Photo.prototype.delete_action = function() {
// Request-Objekte:
req
res
session
root
}
URL: /leibovitz/photos/1024/delete
11. Vererbung
Alles, was für den Super-Prototypen definiert
wird, erbt der Sub-Prototype.
Konstruktoren, Methoden, type.properties
_extends = SuperPrototypeName
Optional, aber üblich: Sub-Prototypen in selbe
Datenbank-Tabelle ablegen
# Dog/type.properties
_extends = Animal
_prototype = ANI_PROTOTYPE_NAME
_extensionId = Dog (String oder frei wählbarer Integer)
12. Vererbung
Collections:
Sub-Prototypes sind auch in Collections vom
Super-Prototype enthalten
allUpdates = collection(Update)
allUpdates.local = USR_ID
allUpdates.foreign = UPD_CREATOR
Update
StatusUpdate TaskUpdate
13. Caching
Obj1 Obj10
Obj2 Obj11
Obj3 Obj12
DB
Obj13
Obj14
Obj15
new old
14. Caching
Obj1 Obj10
Obj2 Obj11
Obj3 Obj12
DB
Obj26 Obj13
Obj14
Obj15
new old
15. Caching
Obj1 Obj10
Obj2 Obj11
Obj3 Obj12
DB
Obj26 Obj13
Obj27 Obj14
Obj28 Obj15
cachesize/2 cachesize/2
cachesize = 12
new old
16. Caching
Obj1
Obj2
Obj3
DB
Obj26
Obj27
Obj28
cachesize/2 cachesize/2
cachesize = 12
new old