Som et eksempel på hvad det er jeg roder med (og ville kunne bidrage
med).
Jeg håber det illustrerer at de tekstmængder og det engagement jeg
arbejder
med.
(rettelser er i øvrigt velkomne).
Omskrivning af appletter til at virke i alle browsere
=====================================
Når man programmerer appletter støder man ofte på problemet at appletten
virker i udviklingsmiljøet men ikke i en browser.
Det skyldes at de fleste browsere kun understøtter en ældre (mindre)
udgave
af Java, oftest version 1.1.5 (mens udviklingsmiljøerne bruger version
1.3
eller senere).
Fra version 1.1 til 1.3 er der sket en kraftig udvidelse af antallet af
klasser og visse klasser har fået tilføjet flere metoder.
Som programmør har du to muligheder:
1)Ændre appletten så den virker i alle browsere.
2)Brugerne installerer en såkaldt "Java Plug-in" med en ny version af
Java.
Første mulighed kræver at du skriver din applet om så den uden videre
kommer
til at virke i alle browsere. Det er umiddelbart den letteste løsning. I
et
større program kan det dog også være at de senere tilføjelser i Java er
så
vigtige for programmet at du må vælge den anden mulighed, selvom den
kræver
mere arbejde både fra din og brugerens side.
9.6.8 Omskrivning til at virke i alle browsere
-------------------------------------------------------
Lad os starte med at se på muligheden for at skive appletten om, så den
virker i alle browsere. Det sker ved at 'nedgradere' appletten til at
kunne
køre i Java version 1.1 (oftest version 1.1.5 eller 1.1.7), d.v.s. ved
at
fjerne brug af alle klasser og metoder der er kommet til efter version
1.1.
Det er lettest at se hvad problemet er ved at kigge i browserens
Java-konsolvindue og se præcis hvilken fejlmeddelelse der kommer (i
Netscape
findes det under: Communicator/Tools/Java Console).
Swing og andre javax-pakker
Import af alle pakker der begynder med javax skal fjernes, f.eks:
//import javax.swing.*; // fjern
import java.awt.*; // behold
Dette indbefatter brug af Swing-komponeter fra javax.swing, der må
erstattes
af de simplere AWT-komponenter (i pakken java.awt). Heldigvis hedder
komponenterne for det meste det samme, bare med et foranstillet J:
Erstat med
JApplet Applet
JLabel Label
JTextField TextField
.... ...
Alternativt kan man hente en separat JAR-fil med Swing-klasserne til
Java
1.1 på Suns hjemmeside som man kan lægge sammen med appletten (men den
fylder et par megabyte, så man bør overveje om man så ikke lige så godt
kunne få brugeren til at opgradere sin browser til version 1.3 med en
Java
Plug-In som vist nedenfor).
Visse ofte brugte metoder
Visse (ofte brugte) metoder findes ikke i version 1.1 og skal skrives
om.
F.eks.:
int bredde = getWidth(); // dur ikke i 1.1
erstattes med:
int bredde = getSize().width; // dur godt i 1.1
Erstat med
Integer.parseInt(streng) new Integer(streng).intValue()
Double.parseDouble(streng) new Double(streng).doubleValue()
Float.parseFloat(streng) new Float(streng).floatValue()
getWidth() getSize().width
(kaldt på en applet eller en anden komponent)
getHeight() getSize().heigth
(kaldt på en applet eller en anden komponent)
Collections-klasserne
De mere avancerede datastrukturer (Collections-klasserne med iteratorer,
ArrayList, LinkedList, HashSet, TreeSet, HashMap o.s.v) kan ikke bruges.
I stedet må man nøjes med Vector og Hashtable, der kan klare de fleste
opgaver.
Alternativt kan man hente en separat JAR-fil med Collections-klasserne
til
Java 1.1 på Suns hjemmeside som man kan lægge sammen med appletten (den
fylder ca. 1 MB).
Java2D
De mere avancerede grafiktegningsfunktioner (Java2D) kan ikke bruges
under
Java 1.1.
Visse klasser
Pakken java.net: URLDecoder og URLClassLoader.
Pakken java.util: Timer og TimerTask (her må man bruge Thread-klassen
direkte i stedet).
9.6.9 Brug af Java Plug-in
--------------------------------
Hvis de ovenfor nævnte ting er meget svære at undvære i dit program kan
du
vælge at bruge en "Java Plug-in", der tilsidesætter browserens
indbyggede
virtuelle maskine med en nyere version (1.2 eller senere).
Det kræver lidt mere arbejde fra brugerens og fra din side:
Brugeren skal installere plug-in'en første gang han besøger en side der
kræver den.
Som programmør skal du lave om i HTML'en der indlæser appletten.
Dette er beskrevet herunder (ellers læs dokumentationen der følger med
Java
eller på
http://www.javasoft.com under 'Products & APIs' vælg 'Java
Plug-in').
Installation og konfiguration hos brugeren.
Brugeren skal have installeret Java, som minimum en JRE (Java Runtime
Environment) på ca. 10 MB. JRE består af en virtuel maskine og de nogle
klasser og værktøjer der er nødvendige i et kørende system (en
programudvikler har altid JRE, da den følger med udviklingsværktøjet).
Dernæst skal alle browsere på maskinen konfigureres så de ved hvor den
separate Java-installation findes.
Under Windows sker det vist nok automatisk når JRE installeres.
Under Linux gøres det i Netscape ved at kopiere jre/bin/javaplugin.so
fra
Java-installationen over i /usr/lib/netscape/plugins (hvis alle brugere
skal
bruge Java Plug-in) eller i $HOME/.netscape/plugins (hvis det kun er
enkelte brugere).
Den enkelte bruger kan ændre nogle egenskaber ved Java Plug-in, f.eks.
om
konsolvinduet skal være synligt, ved at køre programmet
JavaPluginControlPanel.
Hvis brugeren ikke kan få appletten til at fungere efter ændringerne i
HTMLen (så Java Plug-in benyttes - beskrevet nedenfor) så tjek at
JavaScript er aktiveret i browseren.
Ændringer i HTMLen
HTML-koden skal ændres for at fortælle browseren at den skal benytte en
anden udgave af Java end den indbyggede. For at hjælpe med at foretage
disse
ændringer har Javasoft udgivet 'The Java Plug-in HTML Converter', som er
et
værktøj til at konvertere enhver HTML-side der indeholder appletter til
et
format der kan benytte Java Plug-in'en.
Bemærk at hvis du glemmer at konvertere HTML-siden med appletten så vil
browserens bruge sin egen (gamle) Java.
Konverteringsværktøjet kan hentes på
http://java.sun.com/products/plugin/
--
Jacob Nordfalk