Scala Fragen zu Scala

Siassei

Bekanntes Mitglied
Servus,

ein paar Worte zum Titel. Mir ist nichts besseres eingefallen :D

In einer Woche beginnt die studienfreie Zeit und ich brauche eine Beschäftigung :) Also, warum nicht JavaFX und Scala lernen. Gut, zu letzteres hätte ich ein paar Fragen. Im Web findet man nicht sehr viel.
Das Konzept von Scala gefällt mir sehr gut. Es sind ein paar Verbesserungen gegenüber da. Ich möchte aber nicht auf Java verzichten und daher die erste Frage

1.) Ist eine Mischung von Scala und Java möglich? Vielleicht sogar in einem einzigen Projekt oder muss der Code in eine separate Jar?

Beide erzeugen einen Java-ByteCode und daher würde ich das erwarten. So, bleibt nur noch zu klären

2.) In welchen Bereichen spielt Scala seine Stärken aus? Wo verwendet man besser Java?
3.) Ist ein Mix von Scala und JavaFX, Groovy, ... möglich?

Scala soll ein sehr gutes Konzept zur parallelen Verarbeitung bieten. Gibt es hierzu eine gute Einfürhung?

Danke im voraus,
Thomas
 
Zuletzt bearbeitet von einem Moderator:

Landei

Top Contributor
Servus,

ein paar Worte zum Titel. Mir ist nichts besseres eingefallen :D

In einer Woche beginnt die studienfreie Zeit und ich brauche eine Beschäftigung :) Also, warum nicht JavaFX und Scala lernen. Gut, zu letzteres hätte ich ein paar Fragen. Im Web findet man nicht sehr viel.
Doch, da gibt es einiges. Ein paar "Einstiegspunkte" gibt es hier: Scala lernen eSCALAtion Blog

Das Konzept von Scala gefällt mir sehr gut. Es sind ein paar Verbesserungen gegenüber da. Ich möchte aber nicht auf Java verzichten und daher die erste Frage

1.) Ist eine Mischung von Scala und Java möglich? Vielleicht sogar in einem einzigen Projekt oder muss der Code in eine separate Jar?

Beide erzeugen einen Java-ByteCode und daher würde ich das erwarten.
Prinzipell erst einmal kann man Java und Scala class-Files beliebig mixen, die Scala-Klassen benötigen halt noch die Scala-Runtime-Bibliothek. Java-Code von Scala aus zu benutzen ist normalerweise völlig unproblematisch. Andersrum wird es manchmal etwas haarig, weil Java ja viele Scala-Konstrukte nicht kennt (z.B. Companion-Objekte, Methodennamen wie + oder !!, benannte Argumente, Typen höherer Ordnung). Dann muss man sich u.U. die von Scala generierten class-Dateien anschauen, oder sogar eine Scala-Adapterklasse oder so schreiben, die "java-kompatibel" ist.

So, bleibt nur noch zu klären
2.) In welchen Bereichen spielt Scala seine Stärken aus? Wo verwendet man besser Java?
Ich sehe keinen einzigen Bereich, wo Java überlegen wäre. Scala hat besondere Stärken bei:
- Paralleler Verarbeitung
- funktionaler Programmierung, z.B. mit Closures
- Wenn man eine Domänenspezifische Sprache schreiben will
- Parsern
- XML-Verarbeitung (unterstützt XML-Literale im Code)
- Algebraische Datentypen
- wenn Java Generics nicht ausdrucksstark genug sind
- wenn man in Java das Visitor-Pattern benötigen würde
- Skripts
...

3.) Ist ein Mix von Scala und JavaFX, Groovy, ... möglich?

Ich habe schonmal irgendwo gehört, dass jemand an einer API für JavaFX arbeitet. [edit]Da isses: Nabble - Scala - User - Is the scalafx project still live?[/edit]. Prinzipiell sollten gegenseitige Aufrufe mit allen JVM-Sprachen, die mit Java kommunizieren können, möglich sein, also Groovy, JRuby, Jython, Clojure...

Scala soll ein sehr gutes Konzept zur parallelen Verarbeitung bieten. Gibt es hierzu eine gute Einführung?
Scala Actors: A Short Tutorial | The Scala Programming Language
Scala Actors 101 - Threadless and Scalable | Javalobby
Chapter*9.*Robust, Scalable Concurrency with Actors

Danke im voraus,
Thomas

Scala zu lernen hat aber einen großen Nachteil: Sobald man sich an die Sprache gewöhnt hat und wirklich versteht, was das für eine Monster-Waffe ist, macht einem Java-Programmieren nie wieder richtig Spass. Sag nicht, ich hätte dich nicht gewarnt :-D
 
Zuletzt bearbeitet:

Siassei

Bekanntes Mitglied
Ich sehe keinen einzigen Bereich, wo Java überlegen wäre
Ich würde auf Beispielsweise JavaFX nicht verzichten. Daher Scala <-> JavaFX

Scala-Runtime-Bibliothek
Das ist nur eine Bibliothek, sprich Jar. Oder handelt es sich hier um eine Art JRE?

Scala zu lernen hat aber einen großen Nachteil: Sobald man sich an die Sprache gewöhnt hat und wirklich versteht, was das für eine Monster-Waffe ist, macht einem Java-Programmieren nie wieder richtig Spass. Sag nicht, ich hätte dich nicht gewarnt
Augen zu und durch :D
 

Siassei

Bekanntes Mitglied
Achja, ich kann nirgends etwas zu unsignet Typen finden. Gibt es die in Scala oder ist das 1 zu 1 wie Java?

//Edit: Wo findet man Projekte & CodeSnippest die in Scala umgesetzt werden? Ist die Sprache noch so jung, dass die Gemeinschaft noch nichts gegründet hat?
 

Ein Keks

Bekanntes Mitglied
Landei hat gesagt.:
Ich sehe keinen einzigen Bereich, wo Java überlegen wäre.
Das einzige was java hat was scala nicht hat sind gute IDEs - zwar gibt es PlugIns für Netbeans und Eclipse, aber so wirklich ausgreift sind die noch nicht (d.h. es fehlen noch so einige funktionen und eclipse unterstreicht richtige sachen was auf die dauer echt nervig ist^^)
oder ich bin nur zu blöd die richtig zu konfigurieren^^
hab mich so an Eclipse gewöhnt, dass ich einfach keine wirkliche lust hab ohne das zu arbeiten... dabei ist scala echt hammer!:(

edit: die Scala-Lib is ne ca. 4MB große jar und noch eine jar für scala-swing
 

Landei

Top Contributor
Ich würde auf Beispielsweise JavaFX nicht verzichten. Daher Scala <-> JavaFX
Scala-Runtime-Bibliothek
Das ist nur eine Bibliothek, sprich Jar. Oder handelt es sich hier um eine Art JRE?
Eigentlich nur ein paar jars. Normalerweise lässt man Scala-Projekte mit scala.exe laufen, die die nötigen jars schon kennt, aber es würde mit etwas mehr Konfigurationsaufwand auch mit java.exe laufen.


Achja, ich kann nirgends etwas zu unsignet Typen finden. Gibt es die in Scala oder ist das 1 zu 1 wie Java?
Wie in Java. Da die JVM keine unsigned-Typen kennt, wäre die Performance grottenmäßig.

//Edit: Wo findet man Projekte & CodeSnippest die in Scala umgesetzt werden? Ist die Sprache noch so jung, dass die Gemeinschaft noch nichts gegründet hat?

Größere Projekte werden auf der offiziellen Scala-Seite vorgestellt. Ansonsten gibt es Scala-Projekte ganz normal auf GitHub, SourceForge, Google Code u.s.w.
 

Siassei

Bekanntes Mitglied
Wie in Java. Da die JVM keine unsigned-Typen kennt, wäre die Performance grottenmäßig.
Naja, also die JVM muss unsigned Typen kennen. Da unsigned Operationen in Java möglich sind. Darauf baut meine BigInteger umsetzung auf ;-)

Java:
int a = 0x80000000;
int b = 0x70000000;
int res = 0;
res |= (a & 0xFFFFFFFF) + (b & 0xFFFFFFFF)

Ich stiess auf der Scala Seite auf sehr interessante Blogs. Und erfuhr, dass seit Scala 2.7.? es möglich ist, Scala mit Java, Groovy, JavaFX, ... zu mixen.
Joint Compilation of Scala and Java Sources - Code Commit

Das beantwortet alle Fragen, die ich hatte :)
 

Siassei

Bekanntes Mitglied
Danke für deine Antwort,

ich schreibe heute meine letzte Prüfung und werde vorraussichtlich morgen, nach den Kopfschmerzen ;-) , ein erstes Projekt aufsetzten.
Ich sehe, dass du anscheinend maven benutzt. Gibt es hier für eine Beispiel pom.xml für Java, Groovy, ...? Mir fehlt hier noch ein wenig die Erfahrung und weiss nicht genau, wie ich die definieren muss. Wer echt der wahnsinn, wenn du hier evtl. ein Beispiel benennen könntest. Danke im voraus :)
 

Landei

Top Contributor
February Headline: Scratch, Scala, Erlang and JavaFX Script on the way to top 20

This month not much changed in the index. Objective-C and Go are still scoring all time highs, while staying close to each other. There are 4 programming languages that have a realistic chance of entering the top 20 next month. These are educational language Scratch, functional language Erlang and JVM languages Scala and JavaFX Script.

...

Code:
Position	Programming Language	Ratings
21 	Lua 	0.506%
22 	Scratch 	0.498%
23 	D 	0.485%
24 	Scala 	0.459%
25 	Erlang 	0.446%
26 	COBOL 	0.437%
27 	JavaFX Script 	0.435%

TIOBE Software: The Coding Standards Company
 

Siassei

Bekanntes Mitglied
Ich habe mal die User-Guide von Gradle angesehen. Sieht auf den ersten Blick interessant aus. In wie weit wird es sich von maven 3 unterscheiden?
 
B

Blue Monday

Gast
Hallo,

ich entere einfach mal den Thread ... :D ... seit 2 Monaten spiele ich schon ein bischen mit PHP rum, und habe in Verbindung mit HTML auch schon ein paar Webseiten damit umgesetzt. Da ich aber auch mal etwas auf dem Desktop (Windows) machen wollte habe ich mich ein wenig mit C# beschäftigt. Das war in Verbindung mit WPF auch echt interessant, aber nachdem ich die letzten zwei Tage mehrere Stunden lang Videos über Scala gesehen, und viele Artikel über die Möglichkeiten von Scala gelesen habe, bin ich hin und weg von der Sprache. Liebe auf den ersten Blick könnte man sagen.

Lange Rede kurzer Sinn. Ich würde neben der Schule nun gerne Scala lernen, nachdem ich hier -http://www.simplyscala.com/ - schon ein wenig gespielt habe, und hätte da fürs erste zwei Fragen:
  • Was benötige ich alles um mit Scala 2.8 RC3 loszulegen? Genügen die JRE - Java SE Desktop Technologies - Java Web Start Technology - , Scala und Netbeans mit Scala Plugin, oder habe ich irgendetwas wichtiges vergessen?
  • Soweit ich das verstanden habe brauche ich die Scala Distribution sogar nichteinmal seperat runterzuladen, sondern kann das über Netbeans machen, richtig? Oder ist das dann Version 2.7.7?
 

Noctarius

Top Contributor
Ohne den ganzen Thread gelesen zu haben noch kurz ein Kommentar für interessierte (ja landei du hast es geschafft ;)):

Ich habe mir das Buch "Programming in Scala" (Programming in Scala: Amazon.de: Martin Odersky, Lex Spoon, Bill Venners: Englische Bücher) geholt und kann dies bisher sehr empfehlen (hab's noch nicht durch). Zum Umstieg (bzw für Java-Programmierer) ist vielleicht vieles ein wenig sehr umfangreich umschrieben aber dafür wird besonders auf die Unterschiede zwischen Java und Scala eingegangen und vor allem wird direkt auf Fallstricke hingewiesen beim Umstieg von Java nach Scala.

Das Buch ist englisch aber ich würde es Jedem der des englischen mächtig ist (sollten ja nahezu alle Coder sein) ans Herz legen.
 

Landei

Top Contributor
[*]Was benötige ich alles um mit Scala 2.8 RC3 loszulegen? Genügen die JRE - Java SE Desktop Technologies - Java Web Start Technology - , Scala und Netbeans mit Scala Plugin, oder habe ich irgendetwas wichtiges vergessen?
[*]Soweit ich das verstanden habe brauche ich die Scala Distribution sogar nichteinmal seperat runterzuladen, sondern kann das über Netbeans machen, richtig? Oder ist das dann Version 2.7.7?
[/LIST]
NetBeans braucht ein JDK (jedenfalls lässt es mich ein JRE nicht als Java-Plattform hinzufügen). Das Scala-Plugin zu installieren war ein wenig frickelig, aber wenn es erst mal läuft, ist es recht gut. Ich hatte dazumal Scala installiert (und das Plugin verweist auch darauf), aber in der Plugin-Übersicht sehe ich ein Scala Runtime Kit, also könnte es eventuell ohne gehen. Jedenfalls läuft das neuste Plugin auch problemlos(*) mit Scala 2.8 RC3. Die Dokumentation ist leider wirklich ziemlich dürftig. Helfen kann im Notfall das Scala-Forum bzw. NetBeans-Forum.

Übrigens: Willkommen im Club!

(*) "problemlos" heißt, dass man damit arbeiten kann und keine Fehlermeldungen um die Ohren gehauen bekommt, und nicht, dass nicht hin und wieder etwas Korrektes als Fehler unterstrichen oder umgekehrt ein Fehler nicht in der IDE angezeigt wird. Vom Java-Niveau sind zur Zeit alle Scala-Tools noch ein Stückchen weg.
 
Zuletzt bearbeitet:

Landei

Top Contributor
Ohne den ganzen Thread gelesen zu haben noch kurz ein Kommentar für interessierte (ja landei du hast es geschafft ;)):

Ich habe mir das Buch "Programming in Scala" (Programming in Scala: Amazon.de: Martin Odersky, Lex Spoon, Bill Venners: Englische Bücher) geholt und kann dies bisher sehr empfehlen (hab's noch nicht durch). Zum Umstieg (bzw für Java-Programmierer) ist vielleicht vieles ein wenig sehr umfangreich umschrieben aber dafür wird besonders auf die Unterschiede zwischen Java und Scala eingegangen und vor allem wird direkt auf Fallstricke hingewiesen beim Umstieg von Java nach Scala.

Das Buch ist englisch aber ich würde es Jedem der des englischen mächtig ist (sollten ja nahezu alle Coder sein) ans Herz legen.

Ich hatte mir das Buch als Vorab-eBook-Version gekauft. Es ist deutlich besser als das Scala-Buch von David Pollak. Erwähnenswert ist noch Programming Scala von Dean Wampler, von dessen Qualität (nicht der von Dean, vom Buch natürlich...) man sich Online überzeugen kann.
 
B

Blue Monday

Gast
NetBeans braucht ein JDK (jedenfalls lässt es mich ein JRE nicht als Java-Plattform hinzufügen). Das Scala-Plugin zu installieren war ein wenig frickelig, aber wenn es erst mal läuft, ist es recht gut. Ich hatte dazumal Scala installiert (und das Plugin verweist auch darauf), aber in der Plugin-Übersicht sehe ich ein Scala Runtime Kit, also könnte es eventuell ohne gehen. Jedenfalls läuft das neuste Plugin auch problemlos(*) mit Scala 2.8 RC3. Die Dokumentation ist leider wirklich ziemlich dürftig. Helfen kann im Notfall das Scala-Forum bzw. NetBeans-Forum.

Übrigens: Willkommen im Club!

(*) "problemlos" heißt, dass man damit arbeiten kann und keine Fehlermeldungen um die Ohren gehauen bekommt, und nicht, dass nicht hin und wieder etwas Korrektes als Fehler unterstrichen oder umgekehrt ein Fehler nicht in der IDE angezeigt wird. Vom Java-Niveau sind zur Zeit alle Scala-Tools noch ein Stückchen weg.

Danke für die Antwort, läuft bisher alles einwandfrei. :) Folgendes Video finde ich auch noch ganz interessant wenn man sich über ein paar der Möglichkeiten von Scala informieren möchte -> Pragmatic Real-World Scala - Jonas Bonér on Vimeo
 
K

Keth

Gast
Hallo,

gibt es eigentlich eine gute Seite bezüglich syntaktischem Zucker? Oder wie auch immer man folgendes nennt:

Java:
val values = (0 to 100).toList

//oder

val x = 11
val y = 22

val values2 = (x until y).toList

Wenn ich da an das Java-Equivalent denke schreit der faule Hund in mir auf. *g* Weshalb ich gerne eine Übersicht mit Beispielen hätte was es da noch so alles gibt. Irgendwie stelle ich mich bei der Suche ziemlich dumm an.

Schönen Abend noch.
 

Landei

Top Contributor
Nun ja, es gibt Tutorials und Bücher (eine kleine Liste gibt es hier: Learning Scala | The Scala Programming Language einschließlich des Online Buchs Programming Scala ).

Die "Magie", die du hier siehst, kommt aus dem Objekt scala.Predef, das automatisch immer und überall importiert wird. Da drin ist irgendwo eine implizite Methode, die ein Int in ein scala.runtime.RichInt umwandeln kann, und RichInt hat eine to- und eine until-Methode, die jeweils eine Range zurückliefern. Range wiederum hat wie jedes Traversable eine toList-Methode.

Wenn du selbst solche Konvertierungs-Tricks verwenden willst, muss nur eine geeignete implizite Methode vorhanden sein, entweder direkt im Code, durch import eines Objekts, dass diese Methode enthält, oder im automatisch importierten Package-Objekt. Wenn du z.B. deine Zahlen in römische Zahlen umwandeln wolltest, sähe das Grundgerüst ungefähr so aus:

Code:
//In der Klasse selbst oder einem importierten bzw. Package-Objekt:

class Roman(i: Int) {
   def romanize: String = //wie auch immer
}

implicit def intToRoman(i: Int) = new Roman(i)

//In der Klasse:

println(42.romanize)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Unterschied funktionial <-> OO anhand von Scala <-> Java JVM Sprachen: Kotlin, Scala, Groovy, Jython... 5
M Experten für Scala-Play- Programmierung gesucht!! JVM Sprachen: Kotlin, Scala, Groovy, Jython... 3
M Scala-Programm mit Netbeans compilieren JVM Sprachen: Kotlin, Scala, Groovy, Jython... 1
M Suche Scala Entwickler (Umsteiger [JAVA]) für Zusammenarbeit an privatem Projekt JVM Sprachen: Kotlin, Scala, Groovy, Jython... 7
R Frage zu Scala Code JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
Landei Scala Scala 2.10 RC JVM Sprachen: Kotlin, Scala, Groovy, Jython... 3
schlingel Scala Schulung - Gratis vom Scala-Schöpfer JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
Landei Scala Scala-Kritik JVM Sprachen: Kotlin, Scala, Groovy, Jython... 151
Spin Scala Eclipse IDE JVM Sprachen: Kotlin, Scala, Groovy, Jython... 7
Spin Funktionen vs Methods in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 9
Landei Scala Freies eBook "Scala for the impatient" JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
Spin Arithmetik in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 32
0x7F800000 Numerik in Scala (Performance) JVM Sprachen: Kotlin, Scala, Groovy, Jython... 14
Spin Scala MenuListener JVM Sprachen: Kotlin, Scala, Groovy, Jython... 5
Spin Scala in Eclipse will nicht. JVM Sprachen: Kotlin, Scala, Groovy, Jython... 15
Landei Scala Deutsches Scala-Tutorial JVM Sprachen: Kotlin, Scala, Groovy, Jython... 3
B Scala oder Clojure JVM Sprachen: Kotlin, Scala, Groovy, Jython... 6
Landei Scala "Programming in Scala" - erste Ausgabe kostenlos JVM Sprachen: Kotlin, Scala, Groovy, Jython... 1
W Scala *.Scala to *.jar JVM Sprachen: Kotlin, Scala, Groovy, Jython... 6
H Scala und Aspekte JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4
S Scala Klasse.class in Scala? JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4
B Scala Scala und Netbeans GUI Editor JVM Sprachen: Kotlin, Scala, Groovy, Jython... 15
S Scala: Parser und Lexical JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
D Wie manche ich das in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 12
S Scala: Static - Konstruktor?? JVM Sprachen: Kotlin, Scala, Groovy, Jython... 5
G Scala IDE JVM Sprachen: Kotlin, Scala, Groovy, Jython... 18
A Scala und J2ME JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
D (Mathe-) Vektoren in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4
Landei Scala im Kommen :-) JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4

Ähnliche Java Themen

Neue Themen


Oben