logo

Sublime

Sublime er et enkelt verktøy for å utvikle Java-program. Det inneholder en editor (tekstbehandler) der vi redigerer programkode, og det har kobling mot verktøy for å kompilere utføre Java-program.

Hvis du har brukt et annet utviklingsverktøy for Java-program så må du gjerne fortsette å bruke dette. Les mer om alternativer til Sublime.

Installasjon

To nedlastinger/installasjoner, skal utføres i følgende rekkefølge:

  1. Først laste ned og installere Java SE. NB! Hvis du har Windows, velg Windows x86, dvs. 32-bit, selv om du har 64-bits maskin pga. samarbeidet med TextPad.
  2. Deretter laste ned Sublime fra denne siden. Operativsystemet ditt blir automatisk gjenkjent for valg av korrekt versjon. Gjennomfør installasjon.

Skrive inn et Java-program

Lag en katalog for å ta vare på filene du skal lage (se forslag til katalogstruktur).

Legg merke til at teksten endrer farge og muligens størrelse. Sublime gjenkjenner (mange) språk som teksten tilhører, og gir skilletegn, ord og setninger ulike utrykk gjennom font og farge. Du kan endre utseendet i Sublime fra default "Monokai", ved å klikke: Preferences | Color Scheme og velge f.eks. "iPlastic" (hvit bakgrunn i stedet for svart).

Kompilere programmet

Når programkoden er skrevet inn, er det neste å kompilere (språklig sett godkjenne og deretter oversette til maskinutførbar kode). Dette krever oppkobling av Sublime mot JDK (Java Development Kit), som var det første du lastet ned og installerte.

Kompilering kan startes via menyvalg i Sublime: Tools | Build, eller man kan bruke tastekombinasjonen [Ctrl] [B] som en snarveg. Dette skal gi en deling av hovedvinduet i Sublime, og i nedre del ("konsollvinduet") kommer det systemmeldinger, og nå forhåpentligvis: "[Finished in 0.2s]". Dette betyr at Sublime har koblet seg opp mot JDK, og kompilatoren (et program der) har gått gjennom Java-fila og sjekket den for feil. Gitt at du har skrevet koden korrekt, kommer det en oversettelse til byte-kode og prosessen avsluttes med positiv melding "Finished". Her er det fullt mulig du både får feilmeldinger pga. feil i koden, og fordi oppkobling mot JDK ikke var vellykket. Du kan sjekke katalogen der SkrivMelding.java ble lagret, og se om en ny fil SkrivMelding.class har dukket opp. Denne fila kan JVM (Java Virtual Machine) utføre/kjøre på din maskin. JVM er en integrert del av Java SE som du har lastet ned og installert. Men hvordan starte JVM for å få kjørt programmet vårt?

Selv om du ikke fikk "suksess" med kompilering, så gå videre til neste punkt. Der skal vi nemlig lage vårt oppsett for å ta kontroll på både kompilering og kjøring.

Kjøre programmet

Programkjøring i Sublime er ikke helt rett fram. Vi skal derfor lage oss et eget integrasjonsoppsett mellom Sublime og Java SE, som både håndterer kompilering og kjøring. Pass på å gjennomføre alle de tre delene av prosessen nedenfor.

• Del 1

NB! [Ctrl]-knappen på Windows erstattes av [Cmd]-knappen på Mac.

Først forteller vi Sublime hvilken Java-kommando (kompilering) som skal følge av tastekombinasjonen [Ctrl] [B], hvor Java-programvaren er installert og hvilken Java-kommando (kjøring/Run) som skal følge av tastekombinasjonen [Shift] [Ctrl] [B].

  1. Klikk på menyvalget "Tools" i Sublime
  2. Klikk på "Build System"
  3. Klikk på nederste linje "New Build System ..."
  4. Det åpner seg nå en ny fil (med noe kryptisk innhold).
    Merk all koden i det aktuelle grå feltet under her, sørg for å få med både startkrøll { og sluttkrøll } . NB! Det er egne oppsett for Windows*, Mac** og Linux***.
  5. Kopier markert tekst ved [Ctrl] [C], eller høyreklikk og velg "Copy/Kopier"
  6. Gå tilbake til Sublime og fila (se filfanen) "untitled.sublime-build"
  7. Merk all teksten der med [Ctrl] [A] og erstatt så denne ved å lime inn kopiert kode ved [Ctrl] [V], eller høyreklikk og velg "Paste/Lim inn"
  8. Lagre fila ved [Ctrl] [S], eller "File/Fil" og "Save/Lagre" i Sublime-menyen
  9. Skriv inn "MinJavaC" (dvs. min egen Java-kompilering) og pass på å beholde filetternavnet (dvs. "MinJavaC.sublime-build")

* For deg som har Windows

NB: Sjekk filsti/path til Java-verktøyet (jdk) på din maskin!
  {
    "cmd": ["javac", "-Xlint:none", "-cp", ".;..", "-encoding", "utf8", "$file_name"],   
    "path": "C:\\Program Files\\Java\\jdk-11.0.1\\bin",
    //********************************************************************************          
    // NB! Sjekk at katalognavn (etter "path") stemmer med plasseringen på din maskin!
    //********************************************************************************
    "selector": "source.java",   
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "encoding": "cp1252", 
    "variants":
    [ 
      {                
        "name": "Run",
        "cmd": ["java", "-cp", ".;..", "$file_base_name"]  
      }
    ]
  }

** For deg som har Mac

  {
    "cmd": ["javac \"-Xlint:none\" \"-cp\" \".:..\" \"-encoding\" \"utf8\" \"$file_name\" "],   
    "shell": "true",
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "selector": "source.java",
    "working_dir": "${project_path:${file_path}}",
    "variants":
    [
      {
        "name": "Run",
        "cmd": ["java \"-cp\" \".:..\" \"$file_base_name\" "],
        "shell": true
      }
    ]
  }  

*** For deg som har Linux

  {
    "cmd": ["javac \"-Xlint:none\" \"-cp\" \".:..\" \"-encoding\" \"utf8\" \"$file_name\" "],   
    "shell": "true",
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",   
    "selector": "source.java", 
    "variants":
    [
      {
        "name": "Run",
        "cmd": ["java \"-cp\" \".:..\" \"$file_base_name\" "],
        "shell": "true"
      }
    ]
  }  

I alle de tre versjonene forteller "-cp", ".;.." (evt. "-cp", ".:.." på Mac/Linux) at aktuelle filer for kompilering/kjøring ligger i denne katalogen (.), eller (; / :) i katalogen på nivået over denne katalogen (..). Det er ved bruk av ressurser utenom programmet vårt, vi trenger å fortelle hvor dette er å finne. Om noen ønsker å plassere program dypere ned i katalogstrukturen enn det vi legger opp til, så er det bare å utvide mønsteret for å "klatre" i katalogene. Det er også mulig å legge inn en absolutt filsti til aktuelle ressurser (som f.eks. EasyGraphics).


• Del 2

Vi legger også inn   [Shift] [Ctrl] [B]   som en tastekombinasjon i Sublime for å kunne kjøre Java-program etter at de er kompilert.

  1. Merk de tre kodelinjene i det aktuelle (smale) grå feltet under her, sørg for å få med både starthake [ og slutthake ]
  2. Tilbake i Sublime, klikk på menyvalget "Preferences"
  3. Klikk på "Key Bindings" og Sublime åpner et nytt to-delt vindu
  4. Gå til fila i det høyre vinduet, merk all teksten der med [Ctrl] [A] og erstatt denne med å lime inn kopiert kode ved [Ctrl] [V], eller høyreklikk og velg "Paste/Lim inn"
  5. Lagre fila ved [Ctrl] [S], eller "File/Fil" og "Save/Lagre" i Sublime
  6. Lukk det to-delte Sublime-vinduet og koblingen mellom Sublime og Java-verktøyet skal nå være OK!

For deg som har Windows, eller Linux

    [
      { "keys": ["ctrl+shift+b"], "command": "build", "args": {"variant": "Run"} }       
    ]

For deg som har Mac

    [
      { "keys": ["super+shift+b"], "command": "build", "args": {"variant": "Run"} }       
    ]

• Del 3

Til slutt må du kontrollere at oppsettet er korrekt og velfungerende.

  1. I Sublime, gå tilbake til filen SkrivMelding.java (klikk på fil-fanen med samme navn)
  2. På toppmenyen klikker du: Tools | Build system og deretter "MinJavaC".
  3. Trykk tastekombinasjonen   [Ctrl] [B]   og i konsollvinduet nede til venstre skal du se system-meldingen: "[Finished in 0.2s*]"
  4. Trykk tastekombinasjonen   [Shift] [Ctrl] [B]   og i konsollvinduet nede til venstre skal du se programutskriften "Hei verden!" etterfulgt av system-meldingen: "[Finished in 0.2s*]"

      *) Systemprosessene kan ta litt ulik tid fra gang til gang, og fra maskin til maskin, så det kan være forskjellige tidsangivelser i disse slutt-meldingene.


De siste gitte meldingene fra JVM bekrefter at du har korrekt oppsett på din maskin. Du har nå en utmerket løsning for både å skrive og teste Java-program som er aktuelle i læreboka, og for videre programutvikling.