Intellij - kompilacja pliku Scala

0

Cześć, jak sprawdzić czy Intellij kompiluje mi plik Scala kompilatorem scala czy java? Można jakiś kod sprawdzający dodać do pliku class? Tak jak w PHP się sprawdza? Zainstalowana wtyczka Scala przy uruchamianiu Idea.

0

Nie rozumiem pytania. Kompilator Javy nie skompiluje ci Scali bo to 2 różne języki. Nie ogarniam też zresztą po co chciałbyś coś takiego sprawdzać. Jak się skompilowało i działa to znaczy że jest ok.

0

Ale w Project/SDK jest tam ścieżka do Javy 1.8 i tak mi pokazuje po skompilowaniu:
Zrzut_ekranu_z_2016-12-24_01-44-51_png_300x300_q85.jpg

0

Bo nie odróżniasz JRE/JVM czyli środowiska wykonania dostarczanego przez platformę Java (tzw Java Virtual Machine) od kompilatora języka na tą platformę.
Zarówno Scala jak i Java, Clojure, Groovy czy Jython wszystkie kompilują się do takiego samego bajtkodu który jest potem uruchamiany na JVM.

0

Każdy wygenerowany plik z bajtkodem ma w nagłówku wersję bajtkodu, a tak się składa, że wersja bajtkodu odpowiada jakiejś wersji Javy. Kompilator Scali 2.12 domyślnie generuje bajtkod odpowiadający wersji 1.8, wcześniejsze wersje Scali generują bajtkod odpowiadający wersji 1.6.

0

No to ja wiem, ale do Javy musiałem podawać ścieżkę do pliku jvm/open-jdk1.8, a tu pod Scala jakoś samo mi wszystko wykryło po indeksowaniu. Nie trzeba było wybierać /usr/bin/scalac.

0

SBT sam ściąga kompilator Scali (bo ten jest zwykłym plikiem JAR w repozytorium artefaktów), a IntelliJ ściśle współpracuje z SBTem. Nie musisz mieć w ogóle /usr/bin/scalac by używać Scali z poziomu IntelliJa z obsługą SBT.

0

No ja mam Scala w wersji 2.10 w tym IDE, przez apt natomiast zainstalowałem wersję

 apt show scala
Package: scala
Version: 2.11.6-6

Jak zmienić na najnowszą wersje Scala w idea? Pierwszy raz mam styczność z tym Intellij jak i samą Scala.

0

W sumie to zorientowałem się teraz, że niekoniecznie zrobiłeś projekt z SBTa. Zrób projekt Scalowy z użyciem SBT. Przy tworzeniu nowego projektu wybierz typ 'Scala', a potem 'SBT'. Wcześniej prawdopodobnie wybrałeś typ 'Java' i dodałeś potem 'Scala'.

0

Tak zgadza się, Scala i SBT stworzyło projekt z użyciem Scala 2.12, dziękuje.

0

Ale teraz gdy chce stworzyć plik w tym projekcie, nie pokazują mi się pliki class scala, tylko zwykły bez końcówki scala? W new tylko jest do wyboru:
Module
File
Directory

0

Pliki źródłowe musisz stworzyć w odpowiednim katalogu. SBT niby obsługuje pliki .scala w głównym katalogu projektu, ale typowo umieszcza się je w src/main/scala. Przy tworzeniu projektu z SBT masz opcję o nazwie mniej więcej 'create empty roots automatically' - IntelliJ stworzy odpowiednie katalogi dla ciebie i będziesz mniej więcej wiedział, gdzie pliki umieszczać.

0

Już działa, po prostu indeksowanie znowu się włączyło. Teraz skompilowało mi dwie klasy scala w odpowiednim katalogu, utworzone już są w Scala 2.12.
Próbuje też to samo powtórzyć na IDE Scala-Eclipse, ale tamto już jakimiś errorami pluje. Ponoć specjalnie stworzone do Scala.
Zrzut_ekranu_z_2016-12-24_03-28-55_png_300x300_q85.jpg

0

Kod się pisze w katalogu src/main/scala. Katalog scala-2.12 jest używany tylko przy cross-compiling i gdy część kodu musi być inna np pod wersją 2.12 i pod wersją 2.11. W zdecydowanej większości przypadków używa się tylko i wyłącznie katalogu src/main/scala.

Ze Scala-IDE nie jestem na bieżąco, bawiłem się tym bardzo krótko.

0

Dzięki Wibowit, a możesz polecić jeszcze jakieś kursy, tutoriale do Scala 2.11, 2.12. Mogą być po angielsku, po polsku, aby były aktualne. Osobiście korzystam z tego kursu jak na razie i tej książki. Na początek wystarczy?
https://www.tutorialspoint.com/scala/
http://helion.pl/ksiazki/scala-od-podszewki-joshua-suereth-d,scalao.htm
Jak książka używa starszej wersji Scala, to żeby programy się kompilowały bez zgrzytów, wgrywam w Intellij odpowiednią starszą wersję Scala i powinno być ok? Osobiście wydaje mi się, że aby taki nowy język szybko nie poszedł w zapomnienie, trzeba go dobrze promować wśród programistów. Aby pracodawcy poczuli że jest komu w nim pisać, i nie będą musieli szukać ze świecą dobrego programisty Scala. Czyli pisać, bloga, jakieś poradniki, zachęcać nowych adeptów do jego nauki. Językom które nie są promowane przez wielkie korporacje, firmy, ciężko się przebić. W dodatku jak nie są nauczane i promowane na uczelniach. Kibicuję Rust(Mozilla), D, Vala, Ceylon(Redhat). Niby mają wsparcie jakichś małych firm, ale to nie to samo co Kotlin, Go od JetBrains czy Google.

0

Ja zaczynałem kilka lat temu i było to najpierw:
http://www.scala-lang.org/docu/files/ScalaTutorial.pdf
http://www.scala-lang.org/docu/files/ScalaByExample.pdf (rozdział o Hindley-Milner inference należy olać, bo jest niepotrzebnie trudny)
a potem mniej lub bardziej przypadkowe artykuły, głównie blogi. Do tego zadanka programistyczne zacząłem robić w Scali.

Dzisiaj popularnym (przynajmniej wśród znajomych) podejściem są darmowe kursy na Courserze (promowane zresztą na oficjalnej stronie: http://www.scala-lang.org/documentation/ ). Jeden mój kolega polecał "Scala for the Impatient" Caya Horstmanna (tego co pisał te słynne książki do Javy).

Gdybym ja dzisiaj uczył się Scali z książek to wybrałbym coś napisanego po angielsku i dotyczącego (dość) świeżej wersji Scali. Scala ewoluuje dość szybko, jeśli chcą się np pozbyć niechcianej rzeczy z biblioteki standardowej to w wersji X+1 oznaczają to jako deprecated, a już w X+2 usuwają. Rozwój Javki przebiega zupełnie inaczej - tutaj rzeczy z publicznego API praktycznie nie są usuwane - stąd książki do Javy dezaktualizują się wolniej. Obecnie warto więc uczyć się książek dla Scali 2.11 lub 2.12, w mniejszym stopniu 2.10, z tym, że niektórych nie polecam, np "Programming in Scala" Oderskyi'ego, bo ta książka jest mega gruba i ma charakter wręcz encyklopedyczny.

Reasumując, podpierając się doświadczeniem swoim i kolegów proponuję:

  • przerobić te dwa PDFy co podałem,
  • przerobić darmowe kursy na Courserze (przydaje się do CV),
  • poczytać "Scala for the Impatient",
  • w międzyczasie robić wprawki poprzez małe zadania, np z Project Euler czy 99 Scala Problems,
  • zabrać się za kodowanie czegoś konkretnego,

Jak książka używa starszej wersji Scala, to żeby programy się kompilowały bez zgrzytów, wgrywam w Intellij odpowiednią starszą wersję Scala i powinno być ok?

Jak oprzesz projekt o SBTa to możesz łatwo zmieniać wersję Scali zmieniając wartość ustawienia scalaVersion w build.sbt czy tam innym pliku SBTowym. Poczytaj trochę o SBT'u bo to standard w świecie Scali, chociaż trochę przekombinowany (tzn trudny w nauce). Podstawy SBTa powinny być jednak do przejścia: http://www.scala-sbt.org/0.13/docs/index.html (rozdział Getting started with sbt)

1 użytkowników online, w tym zalogowanych: 0, gości: 1