http://is.gd/osxjs
Building truly native applications
Good performance
Lots for "free"
Native components mean OS differences are handled for you
Very well suited for people who are interested in adding an element of pain & suffering into their lives
Great for CLI applications
Performance comparable to C & Java*
Good native support through bindings
135,000+ libraries to depend on
*http://is.gd/543cm8
Supported on all desktop platforms
Building native-like applications
Good performance
Familiar workflow
Has some trouble when it comes to native bindings.
Compiles to OS X, Windows or Linux
Building CLI-like Apps
Is a premium feature
Easy to build
hard to distribute (for now)
(but for n00bz)
... with basic feedback.
OS X only
Input
Output
Business Logic
Business Logic
# Assignment:
number = 42
opposite = true
# Conditions:
number = -42 if opposite
# Functions:
square = (x) -> x * x
# Arrays:
list = [1, 2, 3, 4, 5]
# Objects:
math =
root: Math.sqrt
square: square
cube: (x) -> x * square x
# Splats:
race = (winner, runners...) ->
print winner, runners
# Existence:
alert "I knew it!" if elvis?
# Array comprehensions:
cubes = (math.cube num for num in list)
var cubes, list, math, num, number, opposite, race, square,
slice = [].slice;
number = 42;
opposite = true;
if (opposite) {
number = -42;
}
square = function(x) {
return x * x;
};
list = [1, 2, 3, 4, 5];
math = {
root: Math.sqrt,
square: square,
cube: function(x) {
return x * square(x);
}
};
race = function() {
var runners, winner;
winner = arguments[0], runners = 2 <= arguments.length ? slice.call(arguments, 1) : [];
return print(winner, runners);
};
if (typeof elvis !== "undefined" && elvis !== null) {
alert("I knew it!");
}
cubes = (function() {
var i, len, results;
results = [];
for (i = 0, len = list.length; i < len; i++) {
num = list[i];
results.push(math.cube(num));
}
return results;
})();
ObjC.import("Cocoa");
var styleMask = $.NSTitledWindowMask | $.NSClosableWindowMask | $.NSMiniaturizableWindowMask;
var windowWidth = 600;
var windowHeight = 300;
var window = $.NSWindow.alloc.initWithContentRectStyleMaskBackingDefer(
$.NSMakeRect(0, 0, windowWidth, windowHeight),
styleMask,
$.NSBackingStoreBuffered,
false
);
window.title = "My Awesome Application";
window.makeKeyAndOrderFront(window);
window.center;
Cocoa Bridge
https://github.com/adambutler/osxjs
http://tylergaw.com/articles/building-osx-apps-with-js
https://github.com/dtinth/JXA-Cookbook
https://developer.apple.com/videos/wwdc/2014/#306
One more thing...
What about Swift?
Im sorry* but
Swift !~ JavaScript
*I'm not really sorry!