Wiki source code of WebObjects with Scala

Version 244.1 by Ravi Mendis on 2009/09/15 22:25

Hide last authors
Ravi Mendis 21.1 1 === What is Scala? ===
Ravi Mendis 195.1 2
3 Scala is a modern language not unlike Groovy.
Ravi Mendis 209.1 4 It is said to be more powerful (and faster) than Groovy or Rails which has been the reason for its adoption at sites like Twitter.
Ravi Mendis 195.1 5
Ravi Mendis 243.1 6 Many of its features and paradigms favor multi-threaded and concurrent development which may not be unfamiliar to Objective-C developers:
Ravi Mendis 195.1 7
Ravi Mendis 241.1 8 |= |= Objective-C |= Java |= Scala
9 |= Mutable/Immuable Datatypes | Collections //e.g: NSArray/NSMutableArray// | No | //All datatypes//
10 |= Closures | Blocks (//Extension//) | No | //Built-in//
11 |= Static variables | Yes | Yes | No
12 |= Static methods/functions | Yes | Yes | No
13 |= Concurrency | [[Grand Central Dispatch>>http://en.wikipedia.org/wiki/Grand_Central_Dispatch]] (//Extension//)| //Threads// | Actors
14 |= |= Weakly Typed |=--Strongly Typed--|= Strongly Typed
Ravi Mendis 195.1 15
16 Other notable features include:
17
18 |= |= Objective-C |= Java |= Scala
19 |= Parametered methods | Yes //e.g: addObject: to~:// | No | Yes //e.g: add(object= ,to=)//
20 |= Class composition | Categories | Interfaces | Traits
21
22 A fuller description of Scala can be found [[here>>http://en.wikipedia.org/wiki/Scala_(programming_language)]].
23
24 === Why Use Scala? ===
25
26 With Web 2.0, building concurrent WebObjects applications is a must.
27 Developing and maintaining a concurrent or multi-threaded WebObjects application can be challenging.
28
Ravi Mendis 241.1 29 Scala offers concurrency that is (effectively) built-in to the language and is inherently thread-safe.
Ravi Mendis 195.1 30 So it may offer new solutions for concurrency in WebObjects.
31
Ravi Mendis 239.1 32 === Can WebObjects be Programmed In Scala? ===
Ravi Mendis 195.1 33
34 Yes. It is very simple.
35 Scala compiles to java bytecode. Hence using it with WebObjects is fairly straightforward.
36
Ravi Mendis 239.1 37 == How to Develop WebObjects In Scala ==
Ravi Mendis 195.1 38
Ravi Mendis 231.1 39 1. [[Install the Scala eclipse IDE>>http://www.scala-lang.org/node/94]]
40 1. Add Scala support to your WO project
41 11. Right-click your project in the WO Explorer
42 11. In the context menu select Scala -> Add Scala Nature
43 1. Convert or use ##.scala## instead of ##.java## source
Ravi Mendis 195.1 44
45 {{note title="Note"}}
46
47 This is for Eclipse/WOLips IDE
48
49 {{/note}}
50
51 == WO Scala Example ==
52
Ravi Mendis 205.1 53 The following is a mixed Java/Scala version of the WO Movies D2W app.
Ravi Mendis 195.1 54 All the EO logic and WO components are in Scala.
55 Only the Application class is Java.
56
57 {{attachments patterns=".*zip"}}{{/attachments}}
58
59 === Setup ===
60
61 1. Install and run the OpenBase OBMovies database.
62 1. Right-click on Application.java and run as a WOApplication (as usual).
63
64 ==== EO Templates ====
65
66 See: [[Scala templates>>http://wiki.objectstyle.org/confluence/display/WOL/EOGenerator+Templates+and+Additions]]
67
68 When you create your ##.eogen## file, be sure to make the following changes in the EOGenerator Editor:
69
70 1. Change the File Names Extension to "scala"
71 1. Uncheck Java under Options