Es ist nicht dokumentiert, ob Programmiersprachen-Gurus wie Stroustrup oder Wirth tatsächlich zu manischen Anfällen neigen, wenn Sie die Sprachkonstrukte von JavaScript sehen. Das laute Lachen der Security-Gurus, das erst Stunden später in einem Kichern versickert, ist währenddessen häufiger zu hören. Trotzdem wird diese Sprache inzwischen in alles eingebaut was elektrisch ist, vom eingebetteten Arduino über den Fernseher bis zur hochskalierbaren Enterprise-Anwendung. Warum ist das passiert, und was haben wir noch zu erwarten?
JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?
1. 10-Tage-Hack
oder
U!"v#r$%&$pr%'(#?
Mittwoch, 13. März 13
Hallo Zusammen!
2. Er$)#r T%&* !%'(
+#r M"))%,$p%-$# ...
Mittwoch, 13. März 13
Tja, da habe ich den ersten Talk nach der Mittagspause, das ist immer so mittelsuper.
3. Mittwoch, 13. März 13
Die Leute kommen erholt, entspannt wieder in den Talk .
Mal ehrlich, wer wäre jetzt lieber im Biergarten?
Ja, genau. Wollen wir los? Wir haben noch 30 Minuten. Wer ist alles aus Bayern? Ok, das heist
Zeit für 2 Mass. Wer ist aus Norddeutschland? Es gibt auch Halblitergläser, und ja, das
nennen die hier tatsächlich „kleines Bier“.
4. K#.!/)#:
w#!",#r (%r)#r C/!)#!)
Mittwoch, 13. März 13
Ok, das würde aber der Verlag nicht mögen. Aber das macht nichts, deshalb ist es ja eine
keynote. Es erwartet also keiner, dass toller neuer Content kommt.
5. K#.!/)#:
0#(r $'(&#'()# M-$"*
Mittwoch, 13. März 13
Man könnte zum Beispiel einfach mehr schlechte Musik in seinen Vortrag einbauen. Check.
6. JavaScript
D#r z-rü'*,#b&"#b#!#
*&#"!# Br-+#r
v/! J%v%
Mittwoch, 13. März 13
Eigentlich sollte der Talk anders heissen ...
7. #aufschrei
Mittwoch, 13. März 13
nach der Aufschrei-Debatte, und insbesondere nach dem PHPness-Skandal des Verlages hier
habe ich davon abstand genommen, und mich um political correctness bemüht. Also, zweiter
versuch ...
8. JavaScript
D"# z-rü'*,#b&"#b#!#
*&#"!# S'(w#$)#r
v/! J%v%
Mittwoch, 13. März 13
Daraufhin korrekt die feminine Form gewählt ...
10. JavaScript
W%r-0 +#r +//f#
*&#"!# Br-+#r v/! J%v%
%0 E!+# +/'( $"#,)#
Mittwoch, 13. März 13
Also, eigentlich erzähle ich hier auch, warum der kleine Bruder von Java am Ende doch siegte.
Damit die Dramaturgie stimmt werden ich ihn also vorher massiv schlecht machen.
11. W%$ ,"b) +#0 +#!!
üb#r(%-p) +%$ R#'()
+%$ z- b#-r)#"&#!?
Mittwoch, 13. März 13
Da stellt sich natürlich die frage, ob ich das überhaupt darf? Ist der mann da vorne überhaupt
qualifiziert? Was bildet der sich ein?
12. Johann-Peter Hartmann
Grü!+#r & CTO
Mittwoch, 13. März 13
Ich bin CTO bei Mayflower, aber eigentlich der klassische Hacker-Become-Manager-der-
aber-eigentlich-lieber-wieder-Hacker-wäre. Kennt ihr bestimmt welche von. Ich bin da auch
derjenige, der vor ein paar Jahren das Javascript mit in den Claim wollte.
13. Mittwoch, 13. März 13
Wirklich Ahnung habe ich nur von PHP. Da war ich schon vor 13 Jahren als Speaker unterwegs.
Wer hat ebenfalls einen Migrationshintergrund in dieser Beziehung?
14. W%$ ,"b) +#0 +#!!
üb#r(%-p) +%$ R#'()
+%$ z- b#-r)#"&#!?
Mittwoch, 13. März 13
Faktisch kann man die Frage nach dem Recht also klar beantworten. Nein, dem gibt eigentlich
keiner das Recht.
15. W%$ ,"b) +#0 +#!!
üb#r(%-p) +%$ R#'()
+%$ z- b#-r)#"&#!?
Mittwoch, 13. März 13
eher wenig.
Faktisch kann man die Frage nach dem Recht also klar beantworten. Nein, dem gibt eigentlich
keiner das Recht.
16. JavaScript
2003 Rich Internet Applications.
IE only.
2005
Mittwoch, 13. März 13
Web 2.0 Security
BrowserSecurity
So ein bischen JavaScript habe ich allerdings gemacht - zB 2002 einen javaScript WYSIWYG-
Editor (ie only) geschrieben, und 2004 auch Rich Internet Applications, damals für die
HypoVereinsbank. Richtig auf den Radar kam JavaScript dann im Rahmen von Web 2.0 Security
und SektionEins. Da kannte ich mich wieder gut aus, werdet Ihr später merken. Ich bin also
alt, aber nicht nur ich, sondern auch JavaScript. Wie am ersten Beispiel gut zu erkennen.
17. Mittwoch, 13. März 13
JavaScript hat einen langen Weg hinter sich, und auf der Strecke hat sich viel getan.
Ich weiss nicht wie es Euch geht, aber ich kann mich nicht an das Jahr erinnern, wenn ich nur
die Jahreszahl höre. Aber spiel mir ein Lied aus dem Jahr vor, und ich weiß wieder, was zu
dem Zeitpunkt los war. Also gibt es die Geschichte von JavaScript eingeordnet in schlechte
Musik.
18. 1995
Hey, Brendan! Willst Du für uns
Scheme für Browser entwickeln?
Mittwoch, 13. März 13
Das war 1995. Da spielte Techno, in diesem Fall Kirmestechno, noch eine echte Rolle.
Wer kennt den jungen Herrn unten rechts?
19. 1995 W/-(%,
'//&, $'(#0#!
(define (sum-with x)
(lambda (y) (+ y
x)))
Mittwoch, 13. März 13
Brendan Euch war hingegen eine coole Sau, und hat deshalb funktional entwickelt - in
Scheme, das ist ein Lisp-Dialekt.
20. 1995
Mittwoch, 13. März 13
Und genau das war auch der Grund, warum sich beide handelseinig wurden ...
21. 1995
Uhm, Brendan...
Scheme ... also ... wir haben wen
neues kennengelernt ...
Mittwoch, 13. März 13
In der Zwischenzeit hatte allerdings Netscape jemand anders kennengelernt ..
22. 1995
.. wäre Java-Syntax möglich?
Mittwoch, 13. März 13
Und er musste den Syntax einmal komplett durch die Mangel nehmen.
23. 1995
Hr0pf.
com.sun.awt.getFactoryFactoryFactory()
Mittwoch, 13. März 13
So richtig super fand er das nicht, und er hat viele der grundlegenden Konzepte - etwa die
einfache Objektorientierung, die von Self geerbt wurde - beibehalten. Nur eben weniger
klammern. Dafür bleibt Prototypenbasierte Vererbung.
24. 1995
10 DAYS
Mittwoch, 13. März 13
Apropos Prototypenbasierte Vererbung. Er bekam genau 10 Tage Zeit, die Welt - in diesem
Fall unsere - als Prototyp zu bauen.
25. 1995
• Y#%r 2000 B-,$
• $)r"!, = pr"0")"v#
• S)r"!, = /b1#')
Mittwoch, 13. März 13
Aber die neue Bekanntschaft von Netscape - auf den Namen Sun hörend - setzte sich durch,
und sowohl Javaesquer Syntax als auch Name setzte sich durch. Und ein paar lustige Java-
Eigenheiten, wie parallele Primitive und Objekt-Typen für die gleiche Aufgabe wurden
übernommen, mit impliziter Konvertierung immerhin - wie auch der Jahr-2000-Bug. Siehe
das Logo oben, man wollte es tatsächlich als Java-Ableger vermarkten.
26. 1995
[TM]
Mittwoch, 13. März 13
Ein weiterer Effekt: Bis heute gehört die Trademark JavaScript Oracle.
27. 1995
Pr/)/)2 === Pr/+-*)
Mittwoch, 13. März 13
Aber wir hätten es ihm sagen können - wenn die Demo funktioniert ist sie das Produkt.
Da stand er jetzt. Eigentlich wollte er Scheme machen, und eigentlich war es nur ein Prototyp
28. 1995
Mittwoch, 13. März 13
Durch das Timing konnte Sun unmittelbar in den zweiten Release von Netscape springen. Die
erste Beta vom Netscape Navigator hatte die Sprache noch als Livescript drin. Erst mit Beta 4
hiess es JavaScript, und dort war auch Java mit dabei. Ich habe das damals miterlebt, war aber
eigentlich wegen einer ganz anderen Neuerung nervös - es wurden auch Frames eingeführt,
das klang damals tatsächlich wie ein brillianter Plan.
29. J%v% J%v%S'r"p)
K/0p/!#!)#! S'r"p)#
A!w#!+-!,#! H%'*$
Pr/f#$$"/!#&&# H/bb.%!w#!+#r-
S/3w%r# S/3w%r#
Mittwoch, 13. März 13
Sun und Netscape hatten aber durchaus einen Plan, als sie beide Sprachen gleichzeitig
einführten. Java sollte das Profi-Tool werden, mit dem Schwerpunkt auf Applikationen und
Komponenten, und Javascript das kleine Hackertool für den Feierabendentwickler.
30. E"!f%'( F&4"b#&
Mä'()", S'(!#&&
Mittwoch, 13. März 13
Und genau daher kamen auch die Anforderungen, die Marc Andresen und co an Brendan
stellten. Mach es nicht zu kompliziert. Weil klassische - also klassenbasierte - OO so
kompliziert ist wurde zB auf das Modell von Self gegangen.
31. 1996
Mittwoch, 13. März 13
1996 brachte einen neuen Spieler mit an bord, an dem das Internet vorher - zugunsten von
MSN, AOL und Compuserv - vorbeigezogen war. Der hatte schon vorher einen Browser, aber
der konnte noch kein JavaScript. Der neue auch nicht, weil der Name wie gesagt Sun gehörte
- er konnte deshalb JScript.
32. K/0p%)"b#& "! +#! */0"$'(#! D"!,#!,
"!*&. B-,$...
... %b#r !"'() +"# ,&#"'(#! F#%)-r#$
Mittwoch, 13. März 13
Da wurde der Grundstein für die IE6-Hölle gelegt, das konzept war schon damals klar -
eigentlich schon kompatibel, aber nicht soweit, dass es nützlich wäre.
33. 1996
ANSI
JavaScript ISO
JScript IETF
EcmaScript ECMA
Mittwoch, 13. März 13
In der zwischenzeit hatte man spitzbekommen, dass die Sache mit dem Web eine grössere ist
- und deshalb mit der w3c spontan eine eigene Standardisierungsorganisation gegründet. zu
diesem Zeitpunkt wollte die sich aber nur drum kümmern, dass der Standard etabliert wird,
nicht vom wem.
34. Browser
War
Mittwoch, 13. März 13
Nachdem man sich so schön auf einen Standard geeinigt hatte, konnte man sich ja wieder
streiten - der Browserwar begann. IE jagte mit allen möglichen Tricks, die noch Jahrzehnte
später Gerichte beschäftigen, Netscape den Markt ab. Und am Ende war IE der neue Standard.
35. 1999
Mittwoch, 13. März 13
Und Microsoft war wieder in der gewohnten Umgebung. Wenn man der Standard ist, kann man auch welche setzen.
Und genau das passierte. Outlook-Developer wollen im IE 5.0 einen Background-Request im Hintergrund machen
können, weil sie es für Outlook Web Access brauchten.
36. 1999
XMLHttpRequest
Mittwoch, 13. März 13
Also erschufen sie ein Wunderwerk aus der Höllentechnologie ActiveX und einem Interface
der MSXML2, mit dem man im Hintergrund XML-Requests machen konnte. Und weil es eine
typische Windows-API war, hatte die open-Methode auch gleich 4 unterschiedliche
Signaturen.
37. 2000
XMLHttpRequest
Mittwoch, 13. März 13
Aber trotzdem - es war eine gute idee, eigentlich. Deshalb legte Mozilla im Jahr drauf nach
und implementierte auch eine eigene Variante - analog, aber als JavaScript-Objekt, nicht als
ActiveX, denn das gab es in diesem Browser ja glücklicherweise nicht.
38. Mittwoch, 13. März 13
Leider war es nicht ganz perfekt, deshalb musste man noch ein bischen repariere ...
41. 2004
Mittwoch, 13. März 13
Dass passte ganz gut, denn in diesem Jahr redete Tim O‘Reilly über das Web 2.0 - eigentlich als Beschreibung
für dynamische Internetapplikationen. Mit begriffen wie RIA und SPA spielte aber javascript schnell eine grosse
rolle
42. 2005
Mittwoch, 13. März 13
Noch mehr Rückenwind gab es ein Jahr später: Jesse James Garret denkt sich AJAX als Bezeichnung aus
- für etwas, was schon 6 Jahre vorher möglich war. Deshalb haben wir Developer auch alle gesagt „Das
machen wir doch ohnehin schon“
Wer hat das auch gesagt?
43. 2006
A,# /f L"br%r"#$
Mittwoch, 13. März 13
Trotzdem war das wegen der unterschiedlichen xmlhttprequest-Interfaces noch eine PITA.
also wurden libraries dafür erfunden. Framework-basierte Entwicklung (extjs, jquery, ... ) wird
mainstream
44. 2009
Mittwoch, 13. März 13
2009 wird node.s veröffentlich, und auf einmal ist Javascript nicht nur sinnvoll serverfähig -
das war schon zu netscapes livescript-zeiten so - sondern beantwortet mit events auch ein
akutes problem: wie werde ich responsiv?
45. 2011
A,# /f Fr%0#w/r*$
Mittwoch, 13. März 13
2011 begann dann das Age of Frameworks. Natürlich gab es die auch schon vorher, aber
jetzt sollte die ganze Applikation aus Javascript kommen, und nicht nur ein Teil.
46. Mittwoch, 13. März 13
Und wo sind wir heute? Da fragen wir doch mal die Jungs von Redmonk, die Statistik auf Basis
von echten Diskussionen und echte Commits - konkret Stackoverflow und Github machen.
Die Statistik ist vom Januar. In welcher Ecke vermutet Ihr Javacript?
47. Mittwoch, 13. März 13
Genau, offensichtliche Frae - ganz rechts oben, weniger Fragen als Java auf Stackoverflow,
dafür mehr Lösungen auf Github. Das ist ja mal ein gutes Verhältnis
49. E!)#rpr"$# J%v%S'r"p)
Mittwoch, 13. März 13
JavaScript ist endlich im Enterprise angekommen! Dann kann ja nichts mehr schiefgehen.
Also fast nichts. Fragen wir doch mal die Jungs aus der Enterprise direkt.
51. Mittwoch, 13. März 13
Warum ist das so? weil alle Zahlen float sind, und float tickt eben so, wie auch in jeder
anderen sprache. Es gibt eben kein Integer. Was es aber gibt sind Bitoperatoren. Das heisst
intern gibt es wieder, für einen kurzen Moment, integers - es wird nur jeweils gewechselt.
Und auch schleifenvariablen, Iteratoren etc sind immer Floats als werte.
52. Mittwoch, 13. März 13
Also Leerstring ist nicht 0 als String, aber 0 als Zahl identisch mit beidem?
54. Mittwoch, 13. März 13
Und die Reise geht weiter ... null ist ein objekt, aber gleichzeitig äquivalent undefined.
Mit NaN gibt es sogar eine Entität, die niemals identisch zu sich selbst ist ...
55. E!)#rpr"$# J%v%S'r"p)??
Mittwoch, 13. März 13
Man merkt der Sprache also an, dass sie in 10 Tagen geschaffen wurde. Es gibt noch viele
andere beispiele - zum Beispiel die Verwendung von with oder eben dem == vergleich.
Wurde das eigentlich hier auf der Konferenz schon erzählt? Wenn noch nicht: das kommt
bestimmt noch :-)
56. Mittwoch, 13. März 13
DOM
Ausserdem hat JavaScript Browser die schlechteste API der Welt.
Ebenfalls als spontaner Hack im Rahmen von Netscape 2 entstanden,
dann zu intermediate DOM aufgebohrt, dann von Microsoft erweitert,
dann vom w3c standardisiert.
57. J#+#r Br/w$#r $-pp/r)#+ -!)#r$'("#+&"'( v"#&
A-'( ,#r!# 0%& b-,,. ...
... /+#r %bwär)$*/0p%)"b#& b-,,..
S)%!+%r+"$"#r-!, *%0 #r$) $pä)
S/ -0f%!,r#"'(, +%$$ S#'-r"). *%p-)) ,#,%!,#! "$).
Mittwoch, 13. März 13
Das hat zur Folge, dass DOM nicht nur mit jede Browsertypen, sondern auch nach Version
unterschiedlich supported wird. Gerne mit Fehlern, die dann aber für Kompabilität
dringelassen werden. Die Standardisierung auf einen gemeinsamen Level gab es erst mit der
dritten version. Die APIs sind inzwische so komplex, dass jede Änderung an DOM praktisch
neue Security-Probleme impliziert.
58. S#'-r").?!
Mittwoch, 13. März 13
Security: Fuzzer (Das sind scanner, die nach crashes suchen) finden mit jedem Algorithmus
neue Bugs in allen Browsern. Security und JavaScript ist eh ein eigenes Thema.
59. Sp#"'(#r
== C/+#
== D%)#!
von Neumann-Architektur
Mittwoch, 13. März 13
1945 hat John von Neumann die von Neumann-Architektur entwickelt. Das heisst im
wesentlichen, dass es eine CPU gibt, einen Datenbuss und einen Speicher - und in diesem
Speicher liegen Daten und der ausführbare code.
60. Ursache für ...
•B-ff#r Ov#r6/w$
•I!)#,#r Ov#r6/w$
80%
Mittwoch, 13. März 13
•F/r0%) S)r"!, B-,$
•U$# %3#r Fr##
Dieses Konstrukt sorgt bei Programmiersprachen, bei denen man selbst den Speicher
managen muss für einen grossen Teil der Bugs - 80% der Security-Bugs von 1990 bis 2000
gehen auf diese Konstruktion - Bugs wie oben, bei denen Daten zu Code werden, weil es für
die CPU das gleiche ist.
61. JavaScript
Größte Attack Surface ever:
•2.5 Milliarden Clients
•1 Milliarde Smartphones
•Private Daten im Browser
•Bankdaten im Browser
•Milliardenunternehmen
Mittwoch, 13. März 13
Mit JavaScript haben die die Programmiersprache mit der größten Angriffsfläche der Welt. Es
gibt Milliarden von Clients, und inzwischen gehen alle wichtigen persönlichen Daten über ihn.
Und nicht nur die persönlichen - auch viele Firmendaten sind inzwischen zum Teil
ausschliesslich im Web zu finden. Wer nutzt Google Calendar?
62. D/*-0#!)
== C/+#
== D%)#!
Mittwoch, 13. März 13
Jetzt hätte man erwartet, dass man aus dem C-Problem gelernt hat, und Daten und Code
nicht vermischt. Aber nein - es wird noch schlimmer. Darstellung ist Code und Daten
zugleich. Es wurde einfach in die Dokumentenbeschreibungssprache hineingefriemelt.
63. Ursache für ...
•S#$$"/! R"+"!,
•XSS
•CSRF
•J%v%S'r"p) H7%'*"!,
80%
Mittwoch, 13. März 13
•C&"'*1%'*"!,
Und da sind wir bei der Ursache für die meisten Bugs der letzten 10 Jahre. Nur wegen dieses
Umstandes gibt es nämlich Attacken wie Session Riding, XSS, CSRF, JavaScript Hijacking,
Clickjacking etc.
64. JavaScript
„H#., "'( 4#'-)# +%$ üb#r%&& für D"'(!“
•"! #"!#0 #",#!#! T%, <$'r"p)>!
•0") 4)#r!#0 S/-r'#-8&#$!
•"! Ur&$ 0") 1%v%$'r"p)!
•I! S).&#$(##)$ 0") 4pr#$$"/!()!
•"! A))r"b-)#! %&$ Ev#!)!
Mittwoch, 13. März 13
Die Vermischung ist ja schon schlimm genug, aber JavaScript geht noch einen Schritt weiter.
•
Es will nämlich code überall im Dokument ausführen können.
65. JavaScript
„E$ 0%'() %-'( !"'()$ w#!! D- D"'(
v#r)"pp$), "'( 4#'-)# +%$ )r/9+#0!“
<IMG SRC="jav	ascript:alert('XSS');">
<BODY onload!#$%&()*~+-_.,:;?@[/|]^`=alert("XSS")>
<<SCRIPT>alert("XSS");//<</SCRIPT>
<STYLE>@import'javascript:alert("XSS")';</STYLE>
Mittwoch, 13. März 13
Und es ist noch entgegenkommend - wenn man es mal anders schreibt, hey, kein Problem,
es wird trotzdem ausgeführt. Beispiele ...
Warum ist das so? Bei Dokumenten will man das. Auch wenn das Dokument nicht sauber oder
syntaktisch korrekt ist, trotzdem will man etwas sinnvolles darstellen. Nur passiert das dann
eben auch bei JavaScript.
66. JavaScript
„Fü(& D"'( #"!f%'(
w"# z-(%-$#, r"'()# #$
D"r #"! w"# #$ D"r
p%$$).“
[
Mittwoch, 13. März 13
Und damit man mit dem Code alles machen kann, gib JavaScript einem gleich die entsicherte
Waffe in die Hand - man darf alles überschreiben, auch Systemfunktionen - im Beispiel alert
- bishin zu [ - aka Array.prototype.constructor
67. JavaScript
„W#!! D"r w%$ f#(&) -
"'( (%b +% !/'( w%$“
•A')"v#X
•F&%$(
•PDF
•J%v%
•+ JS "! +#! P&-,"!$ $#&:)
Mittwoch, 13. März 13
Damit aber nicht genug - wenn einem dies nicht reicht, dann hat man gleich auch Zugriff auf
•
den Rest der Browserwelt. ActiveX, Flash, PDF, Java können über JavaScript gesteuert werden,
und die ersten drei implementieren sogar noch ein eigenes Javascript.
68. JavaScript
„A(, +"# %&)#! B-,$ $)#(#! +% %-'( !/'(
r-0, w#!! D- +"# br%-'($)“
•P&-,"!-b%$"#r)# Cr%$(#$
•D/0-b%$"#r)# Cr%$(#$
•U$# %3#r fr## ;p&/")$
•H#%p Spr%."!,
•H#%p F#!, S(-"
Mittwoch, 13. März 13
Und natürlich ist der Browser in C geschrieben, das heisst, die alten Turing-Bugs sind auch
noch alle da. Und hier sind wir an genau der Stelle, warum die NSA und Konsorten heute
6stellige Zahlen für Browserbugs zahlen - an dieser Stelle habe ich das System unter
kontrolle.
69. JavaScript
„W#!! D- H"&f# br%-'($) - D- <!+#$) 0"'(
üb#r%&&“
•S*2#
•A+"-0
•L/*%&# HTML-8&#$
•B#"$p"#&: D#$*)/p-8&#*&%-
•B#"$p"#&: S*2#-W-r0
Mittwoch, 13. März 13
Mit dem Browser hört die Reise aber noch nicht auf. Inzwischen findet sich JavaScript überall,
zum Beispiel auch in Chats wie Skype oder Adium. Und das ist JavaScript-Code, der im
Lokalen Scope läuft, und wie lokale Files ganz andere Rechte hat. Man kann damit direkt Files
aus dem Desktop auslesen, auch die letzten Skype-Würmer und Bugs basierten auf HTML/
JavaScript.
70. JavaScript
„U!+ "'( f%!,# ,#r%+# #r$) %! ...“
•8&#-API
•G#/&/'%)"/!
•H.br"+-M/b"&#
•C%0#r%
•C/!)%')$
•...
Mittwoch, 13. März 13
Und was macht man mit so einer fahrlässigen Infrastruktur? Man entsichert die Waffe, und
gibt ihr über verschiedene APIs zugriff auf Dateien, die Geo-Location - und inzwischen über
Hybrid-Mobile Applications aus Phonegap etc auch Zugriff auf die Kamera und die Kontakte.
71. W"&& w"r*&"'( 1#0%!+ #"!# Spr%'(#,
0") +#r 0%! $/ &#"'() -!+ $/ $'(!#&&
$/ v"#& f%&$'( 0%'(#! *%!!?
Mittwoch, 13. März 13
Und da stellt sich die Frage, warum sollte jemand so eine sprache wollen. Eine Sprache, mit
der man so schnell so dermassen viel kaputt machen kann.
72. J%, ,#!%- +%$ "$)
+#r P-!*).
Mittwoch, 13. März 13
Und genau darum geht es bei JavaScript. Die Nachteile bei Security sind die Vorteile von
heute. Die Reichweite, die Flexibilität, die Mächtigkeit - deshalb ist es so erfolgreich.
73. =0# )/ M%r*#)
1994: 5 Jahre
2004: 3 Monate
Mittwoch, 13. März 13
Es hat sich in der Welt draussen nämlich etwas geändert - sie ist schneller geworden. Die
Mittlere Time to Market ist um Faktor 12 schneller geworden, durch Ursachen wie :
Globalisierung, Computer und Automatisierung. (Zahlen von Agile42, mir fehlen welche für
Software, aber die sollten aktuell noch schärfer aussehen)
74. S'r-0
C/!)"!-/-$ D#p&/.0#!)
L#%! S)%r)-p
10 D#p&/.$ % D%.
30 F#%)-r#$/W/'(#
Mittwoch, 13. März 13
Und diese Beschleunigung ist auch genau der grund, warum es in unserer Welt nicht mehr
nur agile Methoden mit zweiwöchentlichen Releases gibt, sondern auch permanente
Weiterentwicklung, Initiale Produkte aus Learn Startup die nach einem Wochenende
gelaunched werden, Firmen die 30 Deploys an einem Tag oder 30 Features in der Woche in
Produktion bringen.
75. JavaScript wurde als
Einsteigersprache für
schnelle und einfache
Lösungen geschaffen
Mittwoch, 13. März 13
Und genau für solche Anforderungen wurde JavaScript geschaffen. Zu dem Zeitpunkt zwar um
Einsteiger zu adressieren, aber genau heute zahlen sich diese Entscheidungen aus.
76. E"!f%'( F&4"b#&
Mä'()", S'(!#&&
Mittwoch, 13. März 13
Genau eine Sprache mit diesen Eigenschaften braucht es.
77. F#%)-r#$
•sehr mächtige Sprache
(JSON)
•einfache Objektorientierung
•Script-Sprache!
•compiliert sehr schnell
Mittwoch, 13. März 13
Beispiele: Einfache Objektorientierung, sehr mächtige Sprache mit mächtigen Konstrukten -
siehe JSON! - direkt ausführbare Scriptsprache mit extrem schnellen Compile
78. D#p&/.0#!)
•Browser-Umgebung
•Distribution über Web
und Appstore
•minimale Release-Kosten
Mittwoch, 13. März 13
Aber nicht nur die Sprache selbst ist preiswert beim Fortschritt. Auch das Environment macht
alles preiswert. Die Browser-Technologie ist überall vorhanden, die Distributionswege über
Web oder Appstores sind schnell, einfach und preiswert.
79. R#"'(w#")#
S0%r)p(/!#$
Br/w$#r$
T%b&#)$ TV$
OS E0b#++#+ D#v"'#$
W#b%pp&"*%)"/!#!
Mittwoch, 13. März 13
Wenn ich auf JavaScript setze limitiere ich mich nicht. Kein CEO der Welt braucht mehr eine strategische
Entscheidung zum Einsatz von HTML und Javascript treffen, weil es schon überall läuft.
Windows 8 setzt strategisch auf html5/js, HBBTV: faktisch HTML5-Apps, die in einem Opera ablaufen - auch
SetTop-Boxen, Browser-only-OSs wie Firefox OS oder ChromeOS, Arduino itself (espresso)
80. F-! F%'):
J%v%S'r"p) "$) +%, w/ J%v% ("! w/&&)#
1991 als Sprache für
Consumer Electronics
entwickelt ...
TVs
Mobiltelefone
Videorekorder
Waschmaschinen
Mittwoch, 13. März 13
JavaScript ist heute da, wo Java einmal hinwollte.
81. JavaScript is moving outside of the browser, emerging as an
important technology for
cross-platform development.
...
Along with the recent proliferation of other languages that
compile to JavaScript, this makes us wonder if we should
start to consider JavaScript as a platform and not
just a language.
Thoughtworks Technology Radar 10/12
Mittwoch, 13. März 13
Und ich beende das ganze mit einem Zitat aus dem letzten Technology Radar von
Thoughtworks. JavaScript ist die kommende Cross-Platform-Entwicklungswelt, und JavaScript
wird selbst zu einer Platform. JavaScript ist mein neues Betriebssystem.