Fragen zu Scala

Status
Nicht offen für weitere Antworten.

Empire Phoenix

Top Contributor
Nachdem im Dinosurier Thema bereits öfters Scala erwähnt worden war, habe ich mcih jetzt entschieden etwas mehr darüber erfahren zu wollen.

Folgende fragen sind die interessanten:

Ist Scala eine funktionale Sprache?
Benutzt Scala Threads oder Prozesse?
Wie wird in Scala Communication zwischen Prozessen/Threads behandelt?
Wie sind die Io Systeme integreit (von wegen funktional)?
Kann ich einen kurzen beispielcode für die Mischung von Java und Scala haben? (nichts besonderes, nur das man mal nen Besipiel sieht)
 

Landei

Top Contributor
Nachdem im Dinosurier Thema bereits öfters Scala erwähnt worden war, habe ich mcih jetzt entschieden etwas mehr darüber erfahren zu wollen.

Folgende fragen sind die interessanten:

Ist Scala eine funktionale Sprache?
Auch. Scala ist eine Mischung aus OO und funktional (z.B. ist jede Funktion auch ein Objekt). Man kann es deshalb sowohl als "besseres Java" als auch als "einfacheres Haskell" verwenden. Ideal ist natürlich eine ausgewogene Mischung, wo sich beide Konzepte ergänzen.

Benutzt Scala Threads oder Prozesse?
In Scala stehen Threads zur Verfügung, allerdings ist es üblicher, Aktoren zu verwenden (ein Konzept, das aus der funktionalen Sprache Erlang stammt), die eine höhere Abstraktion bieten und besser skalieren (z.B. können sich mehrere Aktoren einen Thread teilen).

Wie wird in Scala Communication zwischen Prozessen/Threads behandelt?
Wie in Java auch. Aber wie gesagt werden Aktoren bevorzugt, die immutable Messages austauschen.

Wie sind die Io Systeme integreit (von wegen funktional)?
Kein Monaden-Kram wie in Haskell, sondern einfach Java-Klassen ein bisschen hübscher verpackt. Scala ist keine "rein" funktionale Sprache, Seiteneffekte sind erlaubt.
Die XML-Verarbeitung wird dir gefallen: XML-Literale sind im Code erlaubt, darauf sind auch XPath-ähnliche Operationen definiert.

Kann ich einen kurzen beispielcode für die Mischung von Java und Scala haben? (nichts besonderes, nur das man mal nen Besipiel sieht)
Du kannst (mit minimalen syntaktischen Unterschieden) einfach Java-Klassen und Methoden aufrufen, also new java.util.Date() oder System.out.println("Hi!") würde einfach so funktionieren.

Ich habe in meinem Blog ein paar Seiten zum Scala-Lernen aufgezählt. Wenn du gern selbst rumprobierst, ist besonders Simply Scala zu empfehlen.

Viel Spaß beim Ausprobieren!
 

ice-breaker

Top Contributor
In Scala stehen Threads zur Verfügung, allerdings ist es üblicher, Aktoren zu verwenden (ein Konzept, das aus der funktionalen Sprache Erlang stammt), die eine höhere Abstraktion bieten und besser skalieren (z.B. können sich mehrere Aktoren einen Thread teilen).
wie funktioniert das, dass sich mehrere Aktoren einen Thread teilen? ???:L
Laufen die Aktionen der Akteure nacheinander? Also so ThreadPool mäßig oder wie funktioniert das?
Du hast mein Interesse geweckt :D
 

Landei

Top Contributor
Ich bin nicht der Aktoren-Experte, und habe selbst noch keine "ernsthaft" eingesetzt. Im Hintergrund wird wohl soetwas wie ein Threadpool rumdödeln, und man hat wohl auch ein gewissen Einfluss darauf, ob jeder Actor seinen eigenen Thread bekommt oder sich mehrere einen teilen. Ich habe nur gehört, dass die Implementierung recht robust ist, und durchaus zehntausende Aktoren in einem System koexistieren können. Größtes Plus ist, dass nichts synchronisiert werden muss (zumindest wenn man sich an den Kontrakt hält, dass Messages unveränderlich sein sollen).

Aktor-Code sieht oft recht elegant aus, und von Threads ist weit und breit nichts zu sehen: pingpong.scala | The Scala Programming Language
Hier eine kurze Einführung: Scala Actors: A Short Tutorial | The Scala Programming Language
 
G

Gelöschtes Mitglied 6946

Gast
Ich stell einfach mal frecherweise 'ne eigene Frage hier rein. Nämlich: Unter welchen Bedingungen kann ich Scala innerhalb von Java aufrufen? Also kann ich per Scala einfach jars erzeugen, die ich unter Java verwenden kann und falls ja, gibt es Einschränkungen in irgendeiner Art und Weise?
 
B

bygones

Gast
Ich stell einfach mal frecherweise 'ne eigene Frage hier rein. Nämlich: Unter welchen Bedingungen kann ich Scala innerhalb von Java aufrufen? Also kann ich per Scala einfach jars erzeugen, die ich unter Java verwenden kann und falls ja, gibt es Einschränkungen in irgendeiner Art und Weise?

Scala laeuft auf der VM, also ja... auf dem Zielsystem muss Scala dennnoch bekannt sein
 

Landei

Top Contributor
Wenn die verwendeten Scala-Standardbibliotheken vorliegen, kann man Scala von Java aus aufrufen, aber das funktioniert aus verschiedenen Gründen nicht so gut wie die andere Richtung:
- Scala erlaubt Klassen- oder Methodennamen wie + oder ::, für die man die richtige "Übersetzung" kennen muss
- Scala-Objektnamen enden (im class-file) mit einem zusätzlichen $, um Namens-Clashs zu verhindern
- Scala-Varargs können (soweit ich weiß) nicht als Varargs von Java aufgerufen werden
- Scala-Felder sind (soweit ich weiß) intern als Methoden realisiert und so aufgerufen werden
- gewisse Konstrukte wie Manifests usw. werden wahrscheinlich nicht funktionieren
...

Solange man Kontrolle über den Scala-Code hat, ist das allerdings weniger wild, weil man dann die Klassen "java-freundlich" gestalten kann (es gibt z.B. eine Annotation, die dir automatisch getter und setter erzeugt usw.). Im Endeffekt bleibt immer noch der Decompiler, aus dessen Ergebnis man meist gut erkennen kann, was man aufzurufen hat.

Ich habe das alles noch nicht selbst ausprobiert, sondern hauptsächlich aus Blogs, PDFs und den Diskussionen auf Nabble - Scala Programming Language forum aufgeschnappt. Prinzipiell sind alle Probleme lösbar, und in der Vergangenheit sind auch schon Änderungen durchgeführt worden, um diese Aufrufrichtung zu erleichtern (wobei der "normale" Weg immer sein wird, Java aus Scala aufzurufen).

Für kleinere Projekte würde ich immer empfehlen, komplett auf Scala umzusteigen, denn der Aufwand ist etwa genausogroß, nur zukunftssicherer (die interne Repräsentation kann sich eben hin und wieder mal ändern).
 

Empire Phoenix

Top Contributor
Zu den Aktoren nochmals, dereren unabhängigkeit von synchronize ist aber nur gegeben wenn man reines Scala hat oder?

Ich meine wenn die auf einzelne Java Objecte zugreifen muss das dann ja auch wieder synchronized werden, oder gibt es dafür eine andere Lösung?
 

Landei

Top Contributor
Aktoren sollen nur unveränderliche Daten als Messages senden, und dann ist Synchronisierung nicht nötig - das ist ja gerade der Witz an der Sache. Wenn du dich an diese Konvention hälst (egal ob mit einem Scala- oder Java-Objekt als Message) kann nichts passieren, wenn nicht - selber Schuld.

Leider gibt es in Scala bisher keinen Weg, Unveränderlichkeit zu garantieren (Fan und D arbeiten wohl an sowas), da muss man für die Freiheit, die man hat, mit ein wenig Disziplin "bezahlen"...
 

Empire Phoenix

Top Contributor
Kurz für Webserver würde sich Sala zb gut eignen (Anfrage,Verarbeitung statischer daten(aka SQL rückgaben ändern sich nicht),Antwort))

Für zb ein Spiel wäre es aber absolut ungeeignet, wenn man davona usgeht das es zb ein World object gibt, weil sich dieses zwangsläufig ändern muss?
 

Landei

Top Contributor
Für eine Webanwendung eignet sich Scala prächtig (es gibt z.B. das Lift-Framework für Webanwendungen)

Für Spiele sehe ich auch kein Problem. Das "World"-Objekt darf sich natürlich verändern, man darf es halt nur nicht als Message von einem Aktor an einen anderen senden - groooßer Unterschied. Wenn du als Aktoren das "World"-Objekt, eine Bergziege und einen In-Game-Chat hast, dann dürfen diese drei sich nur "Briefe" (unveränderliche Objekte) schicken und keine "Briefbomben" (veränderliche Objekte), und schon sind alle glücklich.

Nochmal: Aktoren selbst können veränderlich sein so viel sie wollen, Hauptsache sie behalten ihre Veränderlichkeit schön für sich, indem sie nur unveränderliche Botschaften versenden und empfangen. Die Probleme mit Threads entstehen ja auch nicht durch veränderliche Daten "an sich", sonder nur durch die veränderliche Daten, auf die von mehreren Threads zugegriffen wird.
 
Zuletzt bearbeitet:

0x7F800000

Top Contributor
Ja, aber auf OpenGL kann man mit Scala auch höchstens genauso "gut" zugreifen, wie von Java aus ;(
naja, wen juckt's^^ :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Fragen zu Testabdeckungs-Metriken Allgemeine Java-Themen 4
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
K BlueJ - Fragen zu dem Spiel Pacman (Nachprogrammieren) Allgemeine Java-Themen 141
V Ich hätte 2 Fragen Allgemeine Java-Themen 5
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
H Fragen zur Kraken Api Allgemeine Java-Themen 1
nonickatall Klassen Grundsätzliche Fragen zu geplanter Programmstruktur Allgemeine Java-Themen 5
W Ein paar Fragen zu .properties und .css Allgemeine Java-Themen 6
W Mal ein paar generelle Fragen zu InputStream und OutputStream Allgemeine Java-Themen 4
X Fragen zur Javamail API und Gmail Allgemeine Java-Themen 4
T Fragen bezgl. Lambdas Allgemeine Java-Themen 20
X Collections Fragen zu gleichen Elementen in TreeSet Allgemeine Java-Themen 35
A Neuerungen in Java 8 StreamAPI- Paar fragen Allgemeine Java-Themen 4
temi Fragen zur Software-Architektur Allgemeine Java-Themen 123
M Diverse Design-Fragen Allgemeine Java-Themen 6
J 2 Fragen zur Vererbung Allgemeine Java-Themen 5
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
M Fragen beantworten über Textfeldeingabe Allgemeine Java-Themen 5
D Grundsätzliche Fragen zum Heap Space Allgemeine Java-Themen 12
J Allgemeine Fragen zu Vererbung Allgemeine Java-Themen 1
M Allgemeine Fragen meinerseits Allgemeine Java-Themen 4
V Wie kann ich die Fragen mit den anderen Klassen verbinden? Allgemeine Java-Themen 1
J Fragen zu generischer doppelt verketteter Liste (bei fehlendem Grundverständnis) Allgemeine Java-Themen 1
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
T Fragen zum Thread-Thema Allgemeine Java-Themen 4
2 2 Klein Fragen Allgemeine Java-Themen 7
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
T Fragen zum Thread-Thema Allgemeine Java-Themen 9
A Java Theorie-Fragen Allgemeine Java-Themen 7
K Java QUIZ-Spiel Fragen und Antworten generieren?! Allgemeine Java-Themen 5
R Socket Fragen zu UDP Allgemeine Java-Themen 1
B Noob-Fragen zu Tablets und PC kompatiblität... Allgemeine Java-Themen 6
D Ein paar allgemeine Fragen zu Java Allgemeine Java-Themen 19
L Fragen für Facharbeit: Analyse von Strings in Java Allgemeine Java-Themen 4
R Fragen zu Server + UI Allgemeine Java-Themen 2
U Vier Fragen zu Java Allgemeine Java-Themen 2
H MediaManager Fragen/Probleme Allgemeine Java-Themen 6
D Fragen zum erstellen einer ausführbaren Jar Datei Allgemeine Java-Themen 3
C Polymorphie Fragen zur Annotations von Persistenz Allgemeine Java-Themen 2
O Fragen über Fragen - Bei Änderung XML-Datei -> Anpassung GUI Allgemeine Java-Themen 7
StrikeTom Java Performance Fragen Allgemeine Java-Themen 5
Luk10 Fragen zum ByteBuffer (lwjgl - icons) Allgemeine Java-Themen 2
F Akkumulator Hough-Transformation offene Fragen Allgemeine Java-Themen 4
Luk10 Fragen zu Naming-Conventions Allgemeine Java-Themen 5
Z Einige Fragen Allgemeine Java-Themen 10
T OOP Einige Fragen zu UML-Klassendiagrammen Allgemeine Java-Themen 6
G Einige Fragen zu ResourceBundles Allgemeine Java-Themen 2
S Fragen zu verschiedenen Themen vom JCreator Allgemeine Java-Themen 2
DStrohma Grundsätzliche Fragen zum Aufbau eines komplexeren Programmes Allgemeine Java-Themen 8
Semox Grapheneditor - Allgemeine Fragen zum Logikdesign Allgemeine Java-Themen 3
O kleine Fragen eines Anfängers Allgemeine Java-Themen 2
X Executor fragen ob fertig Allgemeine Java-Themen 13
nrg Swing 2 Fragen zu Swing/AWT Allgemeine Java-Themen 7
K Reflections Fragen Allgemeine Java-Themen 7
S Fragen zum SCJD-Zertifikat Allgemeine Java-Themen 2
M Backend Entwicklung - Konzept fragen Allgemeine Java-Themen 3
Daniel_L Fragen zu RegEx und URL umwandeln Allgemeine Java-Themen 4
J Diverse Fragen bezüglich Jasper Allgemeine Java-Themen 3
S Fragen zum ShutdownHook Allgemeine Java-Themen 7
V Fragen zu einem Java Browser Allgemeine Java-Themen 7
G Fragen zum eigenen Scheduler Allgemeine Java-Themen 4
M Drag and Drop: 3 Fragen Allgemeine Java-Themen 3
L Einige Fragen zu Java Allgemeine Java-Themen 9
F Linguistische Fragen zu Javadoc bzw. Englisch Allgemeine Java-Themen 4
E Einfache Fragen zu Dateien Allgemeine Java-Themen 7
E Thread Fragen in Verbindung mit Swing Allgemeine Java-Themen 4
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
X Einige Fragen zu Serialisierung Allgemeine Java-Themen 2
H Java Multiplicoice Test (10 Fragen) Allgemeine Java-Themen 11
J Viele Fragen. =) Hoffentlich könnt ihr helfen Allgemeine Java-Themen 9
D Grundsätzliche Fragen zur Grafikdarstellung in Spielen Allgemeine Java-Themen 2
J 2 Fragen zu JMF und eine Rechtsfrage Allgemeine Java-Themen 3
S Viele Fragen eines Umsteigers (von .NET) Allgemeine Java-Themen 6
C LinkedList Fragen Allgemeine Java-Themen 7
P Fragen zur JBuilder und den kosten. Allgemeine Java-Themen 7
reibi JVM fragen welche Apps geladen sind Allgemeine Java-Themen 7
I Fragen zum Internetseiten Einlesen/Auswerten Allgemeine Java-Themen 5
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
S 2 Fragen allgemeine fragen zu final und interface Allgemeine Java-Themen 13
M ein paar fragen über JBoss und Catalina Allgemeine Java-Themen 7
D Allgemeine Fragen zum Speichern Allgemeine Java-Themen 3
F allgemeine Fragen zu Java Allgemeine Java-Themen 9
S Fragen zu 4 speziellen Listen Allgemeine Java-Themen 4
U JFrame, JOptionPane - vor dem Schließen Benutzer fragen Allgemeine Java-Themen 10
I zwei simple fragen Allgemeine Java-Themen 22
G 2 Fragen Allgemeine Java-Themen 7
G Fragen zu ausführbaren JAR Files Allgemeine Java-Themen 23
G Fragen zu JTextField bzw. JTextArea Allgemeine Java-Themen 2
J 5 Fragen. Allgemeine Java-Themen 2
P Tausend Fragen... Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben