Changes for page WebObjects with Scala
Last modified by Ravi Mendis on 2011/05/10 02:10
From version 393.1
edited by Ravi Mendis
on 2010/01/17 22:10
on 2010/01/17 22:10
Change comment:
There is no comment for this version
To version 392.1
edited by Ravi Mendis
on 2009/12/15 18:10
on 2009/12/15 18:10
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,13 +1,10 @@ 1 1 === What is Scala? === 2 2 3 -Scala is a language forconcurrentcomputing.4 -I nthedayand age ofmulti-coreprocessors,concurrentcomputingcan'tbe ignored.3 +Scala is a modern language not unlike Groovy. 4 +It is said to be more powerful (and faster) than Groovy or Ruby which has been the reason for its adoption at sites like Twitter. 5 5 6 -Many of Scala's features have been designed with concurrency in mind. 7 -Some of these may not be unfamiliar to Objective-C or WebObjects developers. 6 +Many of its features and paradigms favor multi-threading and concurrency. Some of these may not be unfamiliar to Objective-C and WebObjects developers. Here's a summary: 8 8 9 -Here's a quick summary: 10 - 11 11 |= |= Objective-C |= Java |= Scala 12 12 |= Mutable/Immuable Datatypes | Collections //e.g: NSArray/NSMutableArray// | No | Yes 13 13 |= Closures | Blocks (//Extension//) | No | Anonymous Functions ... ... @@ -26,11 +26,14 @@ 26 26 27 27 === Why Use Scala? === 28 28 29 - Scalaisinherentlythread-safe.30 - Ithasconcurrencythatiseffectivelybuilt-intothelanguage.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. 31 31 32 -So for WebObjects developers, Scala offers itself as a powerful, safe and easy-to-use solution for concurrent applications. (In other words, Scala Actors can be used for problems that would have normally required threads). 29 +Scala offers concurrency that is (effectively) built-in to the language and is inherently thread-safe. 30 +In other words, developing Ajax (i.e asynchronous communication) with WO will require concurrent request handling and thread-safe code, for which Scala is a better choice than Java. 33 33 32 +In addition it may offer new solutions for concurrency in WebObjects and EOF. 33 + 34 34 === Can WebObjects be Programmed In Scala? === 35 35 36 36 Yes. It is very simple. ... ... @@ -51,7 +51,7 @@ 51 51 52 52 Java: 53 53 54 -{{code value="java"}}54 +{{code}} 55 55 56 56 public class _Talent extends EOGenericRecord { 57 57 public static final String ENTITY_NAME = "Talent"; ... ... @@ -73,7 +73,7 @@ 73 73 74 74 In Java: 75 75 76 -{{code value="java"}}76 +{{code}} 77 77 78 78 import com.webobjects.eocontrol.EOGenericRecord; 79 79 import com.webobjects.eocontrol.EORelationshipManipulation; ... ... @@ -96,7 +96,7 @@ 96 96 97 97 In Java: 98 98 99 -{{code value="java"}}99 +{{code}} 100 100 101 101 public class MenuHeader extends WOComponent { 102 102 ... ... @@ -117,11 +117,11 @@ 117 117 ==== Simplified Exception Handling ==== 118 118 119 119 Scala doesn't force you to catch exceptions unlike in Java. 120 -In addition, the syntax employs Scala's very powerful **pattern matching**to handle exceptions.120 +In addition, the syntax employs Scala's very powerful pattern matching to handle different exceptions. 121 121 122 122 In Java: 123 123 124 -{{code value="java"}}124 +{{code}} 125 125 126 126 try { 127 127 EditPageInterface epi = D2W.factory().editPageForNewObjectWithEntityNamed(_manipulatedEntityName, session()); ... ... @@ -234,6 +234,6 @@ 234 234 == How to Build & Deploy a WebObjects Scala Project with Ant == 235 235 236 236 1. [[Download>>http://www.scala-lang.org/downloads]] and install Scala 237 -1. Set##scala.home## (the location Scala has been installed onto)inthe project ##build.properties## file238 -1. [[Add the scalac taskand properties>>ConfiguringAnttoBuild Scala withWebObjects]]to theant build.xml file239 -1. Run from the projectdirectory:##sudo antcleaninstall##237 +1. The ##scala.home## (the location Scala has been installed onto) to the project ##build.properties## file 238 +1. Add the ##scalac## tasks to the ant build.xml file 239 +1. Customise the app classpath file. i.e either ##MacOSClasspath.txt## or ##UNIXClasspath.txt##. You will need to add an entry for ##scala-library.jar##