9. SinnerSchrader: The Important
Facts
1
Server side JS project
in development
2
Active CouchDB projects
1
Server side JS project
in production
* Linden, 2006 5
Slide
10. SinnerSchrader: The Important
Facts
1
Server side JS project
in development
2
1
Erlang projects in planning
2
Active CouchDB projects
Server side JS project
in production
* Linden, 2006 5
Slide
11. SinnerSchrader: The Important
Facts
1
10 Mil $
Server side JS project
in development
in the bank
2
1
Erlang projects in planning
2
Active CouchDB projects
Server side JS project
in production
* Linden, 2006 5
Slide
34. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes
Prototypes
Packages
Mixins
Traits
Method
Modifiers
Type
Coercions
Slide 24
35. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes
Packages
Mixins
Traits
Method
Modifiers
Type
Coercions
Slide 25
36. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages
Mixins
Traits
Method
Modifiers
Type
Coercions
Slide 26
37. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages Win Fail/Win Win Yes You Can Win
Mixins
Traits
Method
Modifiers
Type
Coercions
Slide 27
38. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages Win Fail/Win Win Yes You Can Win
Mixins Fail Fail Win Yes You Can Win
Traits
Method
Modifiers
Type
Coercions
Slide 28
39. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages Win Fail/Win Win Yes You Can Win
Mixins Fail Fail Win Yes You Can Win
Traits Fail Win Fail Yes You Can Win
Method
Modifiers
Type
Coercions
Slide 29
40. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages Win Fail/Win Win Yes You Can Win
Mixins Fail Fail Win Yes You Can Win
Traits Fail Win Fail Yes You Can Win
Method Fail Fail Fail Yes You Can Win
Modifiers
Type
Coercions
Slide 30
41. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages Win Fail/Win Win Yes You Can Win
Mixins Fail Fail Win Yes You Can Win
Traits Fail Win Fail Yes You Can Win
Method Fail Fail Fail Yes You Can Win
Modifiers
Type Fail Fail Fail Yes You Can Win
Coercions
Slide 31
42. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages Win Fail/Win Win Yes You Can Win
Mixins Fail Fail Win Yes You Can Win
Traits Fail Win Fail Yes You Can Win
Method Fail Fail Fail Yes You Can Win
Modifiers
Type Fail Fail Fail Yes You Can Win
Coercions
Epic Fail
Slide 32
43. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages Win Fail/Win Win Yes You Can Win
Mixins Fail Fail Win Yes You Can Win
Traits Fail Win Fail Yes You Can Win
Method Fail Fail Fail Yes You Can Win
Modifiers
Type Fail Fail Fail Yes You Can Win
Coercions
Epic Fail Failed
Slide 33
44. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages Win Fail/Win Win Yes You Can Win
Mixins Fail Fail Win Yes You Can Win
Traits Fail Win Fail Yes You Can Win
Method Fail Fail Fail Yes You Can Win
Modifiers
Type Fail Fail Fail Yes You Can Win
Coercions
Epic Fail Failed Medium Fail
Slide 34
45. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages Win Fail/Win Win Yes You Can Win
Mixins Fail Fail Win Yes You Can Win
Traits Fail Win Fail Yes You Can Win
Method Fail Fail Fail Yes You Can Win
Modifiers
Type Fail Fail Fail Yes You Can Win
Coercions
Epic Fail Failed Medium Fail Guru Wins
Slide 35
46. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS
Classes Win Win Win Yes You Can Win
Prototypes Fail Fail Fail Win Win
Packages Win Fail/Win Win Yes You Can Win
Mixins Fail Fail Win Yes You Can Win
Traits Fail Win Fail Yes You Can Win
Method Fail Fail Fail Yes You Can Win
Modifiers
Type Fail Fail Fail Yes You Can Win
Coercions
Epic Fail Failed Medium Fail Guru Wins Win
Slide 36
47. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS CouchDB
Classes Win Win Win Yes You Can Win Fail
Prototypes Fail Fail Fail Win Win Fail
Packages Win Fail/Win Win Yes You Can Win Fail
Mixins Fail Fail Win Yes You Can Win Fail
Traits Fail Win Fail Yes You Can Win Fail
Method Fail Fail Fail Yes You Can Win Fail
Modifiers
Type Fail Fail Fail Yes You Can Win Fail
Coercions
Epic Fail Failed Medium Fail Guru Wins Win I‘m sorry
Jan :)
Slide 37
48. Scientific Model of Object System
Awesomeness
Java Smalltalk Ruby JavaScript Joose/JS CouchDB
Classes Win Win Win Yes You Can Win Fail
Prototypes Fail Fail Fail Win Win Fail
Packages Win Fail/Win Win Yes You Can Win Fail
Mixins Fail Fail Win Yes You Can Win Fail
Traits Fail Win Fail Yes You Can Win Fail
Method Fail Fail Fail Yes You Can Win Fail
Modifiers
Type Fail Fail Fail Yes You Can Win Fail
Coercions
Epic Fail Failed Medium Fail Guru Wins Win I‘m sorry
Jan :)
Slide 37
49. Joose is all about embracing
JavaScript while giving you a large
hammer for increased expressivity
when you need it.
58. Prototypes
Prototype("Proto", {
methods: {
one: function () { return 1 }
}
})
Every instance of a Prototype
gets their own meta class instance!
59. Prototypes
Prototype("Proto", {
methods: {
one: function () { return 1 }
}
})
Every instance of a Prototype
gets their own meta class instance!
// similar to
var obj = new SomeJooseClass();
obj.detach()
60. Type Coercions (no more parseInt)
Type('MySmallNumber', {
uses: Joose.Type.Int,
where: function (value) {
if ( value > 1 && value < 5 ) {
return true;
}
return false;
},
coerce: [{
from: Joose.Type.Str, // coercion from string to number
via: function(str) {
return new Number(Str); // perform our coercion
}
}]
});
61. Type Coercions (no more parseInt)
Class('MyClass', {
has: {
myField: {
is: 'rw',
isa: Joose.Type.MySmallNumber,
coerce: true
}
}
})
var o = new MyClass();
o.setMyField('3')
alert(o.myField * 2)
80. Thank You for Listening!
http://nonblocking.io
@cramforce
Editor's Notes
So why J2EE then?
Lets see what some people say about Joose
We&#x2018;re pushing the nice core language away and substitute it with something less pure
The Microsoft Tactic
So if you use Joose, you might as well use J2EE
Who here read G&#xF6;del, Escher, Bach by Douglas Hofstadter?
Go home and read it now! I&#x2018;m actually not done yet :)
There are all kinds of Strange Loops in Joose