Skip to content

Java Simple Tutorial Guide Mac OSX Tiger

Jag har skrivit denna lilla guide för att jag själv ska kunna förstå hur Java fungerar tillsammans med OSX Tiger. Förhoppningsvis kanske även någon annan finner guiden användbar . Nämnas bör även att jag inte är kung på *nix grejor så det kanske kan finnas felaktigheter i min “guide” men jag hoppas givetvis att det inte gör det. Detta är hur Java 1.5.0 var satt att fungera från början i OSX Tiger 10.4 utan att jag själv gjort några ändringar. Denna guide är tänkt att kunna användas som en liten snabb refferensguide som man enklet ska kunna få en snabb översikt på hur det hänger ihop... Java är som sagt lite eljest på Mac när man jämför med andra OS... Min snabbguide är dock mer inriktad på att förstå själva standard java grejorna fungerar med OSX och inte saker som aqua interface och osx developer tools å sådant...

Java JRE & SDK

Java JRE - Java Runtime Environment
Om man endast behöver kunna köra program som är skrivna i Java så behöver man endast ha Java Runtime Environment installerat. JRE är den mjukvara som krävs för att köra bytecode dvs .java filer som compilerats till .class filer (classfiler som då alltså består av bytekod). Något man ofta pratar om när man nämner JRE är Java Virtual Machine / JVM. Det är det “programmet” som kör javaprogrammen. Det finns många versioner av JRE oftast använder man sig av den senaste. I OSX så är det så att JRE och SDK brukar vara installerat och konfigurerat right out of the box så man inte behöver göra så mycket inställningar själv för att få det att fungera som man vill.

Java SDK - System Development Kit
Detta är de filer/mjukvara/program som behövs för att man själv ska kunna skriva och utveckla javaprogram och kompilera dessa program till funktionabel bytekod som Java Virtual Machine ska kunna köra. Det finns många olika versioner av SDK för t.ex. J2SE, J2ME och J2EE det är J2SE som är installerat från början i OSX. Dock kan ju nämnas att Java på MAC skiljer sig ganska markant mot andra operativsystem och plattformar då det hänger med lite olika filer å så men det är ju nästan överkurs att förstå det.

Java och OSX Tiger - Apple Developer Java OSX

Java (JRE och SDK) är “inbyggt” i OSX från start, det är implementerat som ett Ramverk / Framework i OSX.

Ramverk / Framework = En katalogstruktur som innehåller delade resurser, alltså saker/filer som kan delas av många olika program/applikationer samtidigt. T.ex. Dll'er, bilder, mm. Så istället för att ha flera kopior av samma filer på flera olika ställen så har man dem alltså sammlade på ett och samma ställe. Detta är alltså vad Apple menar med ett ramverk... som jag har förstått det.

Vart finns Java i OSX?

För att åskådliggöra detta har jag snickrat ihop ett litet diagram över saken som gör det hela lite mer lättförståeligt.

medium_java-osx-tiger-diagram_0.jpg
Klicka på bilden för att få se den i full storlek.

Övrigt som är bra att veta

Extensions aka Standard extensions aka Optional packages

Med ovan tre fraser som betyder samma sak menas att man kan utvidga standard Java installation med nya jar / zip och andra classfiler för att t.ex. kunna använda andras kodbibliotek. På MAC och OSX så lägger man då dessa filer i /Library/Java/Extensions, se mitt diagram ovan. (Java letar automagiskt i denna katalog när den startar en JVM för att köra javaprogrammet. Om man lägger filer i denna katalog så finns dock filerna tillgängliga för ALLA användrare på din dator. Om du endast vill ha dessa filer tillgängliga för en specifik användare så får du skapa den katalogstrukturen i din användares hem katalog. Alltså ~/Library/Java/Extensions/ där ~ står för använarens hemkatalog.

Environment variables

Environment Variable Tutorial

För att en del Javasaker ska fungera så måste man även trixa lite med lite inställningar för sitt operativsystem.

$ JAVA_HOME

Förslaget enligt Apple dit JAVA_HOME bör sättas att peka till är:
JAVA_HOME=/Library/Java/Home

Detta variabelnamn för en environmnet variabel brukar användas för att ange den sökväg till den katalog som innehåller viktiga javafiler och kataloger. Alltså för den SDK du använder dig av. Dock som jag förstår det så kräver en del program att en environment variabel vid namn JAVA_HOME finns och är satt till korekt sökväg. Och vad är då korrekt sökväg för JAVA_HOME? Jo JAVA_HOME borde peka till den katalog/länk som innehåller det som HOME katalogen för den Java utgåva man använder ska innehålla ... Vad innehåller då HOME katalogen? Jag antar att det beror på vilken version av Java man använder sig av men vad jag vet så finns det i varje version av Java som man laddar hem (eller redan har installerad) en katalog med namn HOME i min nuvarande version av Java är 1.5.0_13-b05-241 (ta reda på din version av Java genom att skriva “java -version” i prompten i terminalen) så innehåller denna HOME katalog 3 andra kataloger vid namn bin, lib och man samt en symlink till en “Headers”-katalog som jag just nu inte har koll på vad det är...

$ CLASSPATH

Vid kompilering av din källkod (java filer, libbar osv...) så letar compilatorn (javac) reda på de filer som behövs för att kunna bygga ett fungerande java-program. Detsamma gäller i princip även för JVM / har jag för mig) den letar efter classfiler och andra behövda filer i dessa steg:

1 - Bootstrap classes
Detta är vad standard classerna för den Java Platform du anväder dig av. Alltså t.ex. de classer som innehåller java.io osv.

2 - Extensions AKA Standard extensions AKA Optional packages
Java classer och filer som vi utvecklare vill utvidga Javas grundfunktionalitet med t.ex. om vi skrivit egna classer eller vill använda något opensource library osv... Se ovan det jag skrev om extensions och hur man gör med detta på en mac.

3 - CLASSPATH
Sist letas det efter behövda classer i denna Environment variable som anger sökvägar till sådana filer. Classpath för javac eller annat SDK-tool kan anges som en extra parameter/option (t.ex. javac -classpath cp1;cp2;cpx) eller genom att man då sätter en environment variable vid namn CLASSPATH. En CLASSPATH kan då peka på .jar .zip eller .class filer. Varje “classpath” som du lägger till CLASSPATH environment variabeln bör innehålla hela sökvägen till katalogen eller till den enskilda filen eller om det gäller ett paket med filer så anger man själva rootpaketet som slut. För att läsa om hur man fixar med sina env var så läs min guide om environment variables. Om man i någon av claserna/filerna i sin CLASSPATH skulle ha samma paketstruktur och namn så använder classloadern (tror jag) den class den hittar först listad i CLASSPATHEN... (Rätta mig gärna om jag har fel på denna punkt)

$ PATH

Lista över kataloger innehållandes exekverbara kommandon, i denna environment variable bör sökvägen till de Java kommandon du vill utföra finnas med. Så om du t.ex. vill köra kommandot javac så innehåller förhoppningsvis din PATH-variabel en sökväg till en katalog där kommandot javac finns. I OSX så är det som så att när du skriver tillexempel javac helloworld.java så hittar OSX binären javac genom att använda sig av environment variabel PATH. I denna variabel PATH så finns nämligen sökvägen /usr/bin angiven och där i finns en(flera) symlänkar till java program specifika för din Javaversion och SDK som du vill/använder dig av.

Hitta rätt med sitemap över macblog.se

Comments

Kolla in denna sida som

July 28, 2009 by Anonymous (not verified), 2 years 27 weeks ago
Comment id: 197

Kolla in denna sida som skriver lite om classpath fast på engelska
http://java.sun.com/j2se/1.4.2/docs/tooldocs/findingclasses.html

AdaptiveThemes