Java (programazio-lengoaia)
| Jatorria | |
|---|---|
| Sorrera-urtea | 1995 |
| Argitaratze-data | 1995 |
| Jatorrizko herrialdea | Ameriketako Estatu Batuak |
| Azken bertsioa | Java SE 26 |
| Honen izena darama | Java coffee (en) |
| Ezaugarriak | |
| Programazio paradigma | programazio egituratu, objektuetara bideratutako programazioa, Programazio funtzional, Programazio inperatibo, class-based programming (en) |
| Media mota | application/java-archive |
| Egile-eskubideak | copyrightduna |
| Lizentzia | GNU General Public License |
| Deskribapena | |
| Oinarritua | Oak |
| Honen parte da | Java platform (en) |
| Honen eragina jaso du | C++, C, Ada, Simula 67, Smalltalk, Objective-C, Object Pascal, Oberon, Eiffel, Modula-3, Mesa, Simula, C Sharp eta UCSD Pascal (en) |
| Ekoizpena | |
| Diseinatzailea | James Gosling eta Sun Microsystems |
| Garatzailea | Sun Microsystems, Oracle Corporation eta James Gosling |
| Maskota | Duke (en) |
| oracle.com… | |
Java programazio-lengoaia bat da. James Gosling-ek diseinatu zuen, Sun Microsystems[1] enpresan ziharduela, 1990eko hamarkadan. "Write once, run anywhere"[2] filosofiari jarraitu zion; kodea plataforma desberdinetan exekutatu ahal izatea lortu nahi zen, behin eta berriz konpilatu beharrik izan gabe. Sintaxi aldetik C eta C++ programazio-lengoaien antza du. Objektuei orientatutako lengoaia bat da.
Aplikazio eta webgune askok ez dute funtzionatzen Java instalatuta eduki ezean. Java azkarra, segurua eta fidagarria da eta nonahi dago: konputagailu eramangarrietan, datu-zentroetan, jokoetarako kontsoletan, superkonputagailuetan, telefono mugikorretan, Interneten, etab. 2012az geroztik, programazio-lengoaia erabilienen artean dago, batez ere web bezero eta zerbitzarien aplikazioetarako[3][4].
Hasierako Java-konpiladoreak, makina birtualak eta liburutegiak Sun Microsystems enpresak garatu zituen software jabedun moduan. Gerora, ordea, Java teknologia gehienen lizentzia-motak aldatu eta GNU Lizentzia Publiko Orokor moduan jarri ziren. Badira teknologia horien ordezko diren beste inplementazio batzuk ere, Javarako GNU konpiladorea edo GNU Classpath, adibidez.[5]
Javak eta JavaScriptek ez dute haien artean zerikusi zuzenekorik, nahiz eta biek C-ren antzeko sintaxia erabili.[6]
Historia
[aldatu | aldatu iturburu kodea]Telebista interaktiboa lortzea helburu zuen proiektu baten barruan sortu zen Java Sun Microsystems enpresan. The Green Project izeneko proiektua hamahiru lagunek osatutako taldeak garatu zuen James Gosling-en zuzendaritzapean. C++ programazio-lengoaiaren antzeko egitura eta sintaxia zituen lengoaia eta makina birtuala inplementatu nahi zituzten. 1994an proiektuan lanean ari zirela, eta sortu berri zen Mosaic web-nabigatzaileak[7] Interneta interaktibo bihurtuko zuela sinetsita, proiektua Web-era bideratzea erabaki eta web-nabigatzaile prototipo bat sortu zuten: WebRunner, beranduago HotJava izenez ezagutuko zena.[8] 1995ean Java programazio-lengoaia eta HotJava web-nabigatzailea argitaratu ziren. Netscape enpresaren sortzaile Marc Andreessen-ek haien Netscape nabigatzaileak Java jasango zuela iragarri zuen[9].
Programazio-lengoaiak hasieran Oak izena hartu zuen, Goslingen bulegoaren kanpoaldean zegoen haritzagatik. Marka komertzial hori dagoeneko erregistratuta zegoela ikusi zenean, lengoaiak Green izena hartu zuen, baina azkenean Java izenez izendatu zuten. Egia esan, ez dago argi Java izenaren jatorria zein den. Iturri batzuek diotenez, lengoaia diseinatu zutenen izenetatik eratorritako akronimo bat da: James Gosling, Arthur Van Hoff, eta Andy Bechtolsheim, baina badira akronimoak beste jatorri bat duela diotenak ere: Just Another Vague Acronym[10]. Beste hipotesi batek dio, gertuko kafetegian ematen zuten Java uharteko kafeagatik aukeratu zutela izena. Horrek azalduko luke lengoaiaren logoa kafe kikara bat izatea eta konpilatzaileak sortzen dituen .class fitxategien hasiera 0xCAFEBABE izatea, idazkera hamaseitarrean. Hala ere, izena hitzen ausazko zerrenda batetik atera zutela dioten teoriak ere badira[11].
Lengoaia plataformaren independentea izatea zen helburua, "Write once, run anywhere"[2], behin Java aplikazio bat sortu ondoren, hedapen handieneko plataformetan arazorik gabe exekutatu ahal izateko, exekuziorako Java virtual machine (JVM) doako ingurune arinaren bidez. Exekuzio ingurunea nahiko segurua zen, eta web-nabigatzaile nagusiek laster gehitu zuten zuten web-orrietan txertatutako Java applet edo aplikazio txikiak exekutatzeko aukera.
Sortu zenetik, Javak aldaketa ugari jaso ditu. Hona hemen bertsio egonkorrenen zerrenda, hasieran Java Development Kit (JDK) moduan izendatua, eta gerora Java Standard Edition (JSE) laburduraz emana:
- JDK 1.0 (1996ko urtarrila)
- JDK 1.1 (1996ko otsaila)
- J2SE 1.2 (1998ko abendua)
- J2SE 1.3 (2000ko maiatza)
- J2SE 1.4 (2002ko otsaila)
- J2SE 5.0 (2004ko iraila)
- Java SE 6 (2006ko abendua)
- Java SE 7 (2011ko uztaila)
- Java SE 8 (2014ko martxoa)
- Java SE 9 (2017ko iraila)
- Java SE 10 (2018ko martxoa)
- Java SE 11 (2018ko iraila)
- Java SE 12 (2019ko martxoa)
- Java SE 13 (2019ko iraila)
Lengoaiaren bilakaera Java Community Process (JCP)[12] taldeak arautzen du eta Java Specification Requests (JSRs)[13] dokumentuan zehazten dira proposatu nahi diren aldaketak.
Filosofia
[aldatu | aldatu iturburu kodea]Java programazio-lengoaia bost helburu nagusirekin sortu zen:
- Objektuetara orientatutako programazioaren paradigma erabili beharko luke.
- Programa bera plataforma desberdinetan exekutatzeko aukera eman beharko luke.
- Sareko lanerako euskarria eskaini beharko luke.
- Urruneko sistemetan kodea modu seguruan exekutatzeko diseinatu beharko litzateke.
- Erabilerraza izan beharko luke, eta objektuetara orientatutako beste lengoaietatik, C++ adibidez, onena jaso beharko luke.
Duten garrantziagatik, objektuetara bideratua izatea eta plataformaren independentzia (1. eta 2. ezaugarriak) sakonago azaltzen dira behean. Sareko lanerako euskarria eta urruneko kodearen exekuzioa lortzeko (3. eta 4. helburuak), Javako programatzaileek batzuetan, CORBA (Common Object Request Broker Architecture), Internet Communications Engine[14] edo OSGi[15] moduko hedapenak erabiltzen dituzte.
Objektuetara bideratua
[aldatu | aldatu iturburu kodea]Programazio-lengoaia bat objektuetara bideratua dagoela esaten denean, programazio-metodoari eta lengoaiaren diseinuari egiten zaio erreferentzia. Horrek funtsean esan nahi duena da, datu-mota bakoitza harekin eragiteko definitu diren eragileekin lotu dela diseinu fasean; datuak eta kodea (funtzioak edo metodoak) batera datoz objektuetan[16]. Horrela, objektua "egoera" (datuak) eta "portaera" (kodea) gordetzen dituen paketea dela esan daiteke. Aldatzen dena aldatzen ez denetik bereiztea da ideia. Izan ere, datu-egitura bat aldatzeak datu-mota horrekin lan egiten duen kodea aldatzea dakar, gehienetan. Banaketa horrek software-sistema bat diseinatzeko oinarri egonkorragoa eskaintzen du. Proiektu handiak garatzean, kudeatzen errazak izatea lortu nahi da, haien kalitatea hobetuz.
Objektuetara orientatutako programazioaren beste helburu bat objektu entitate generikoen sorrerarekin software-proiektuen artean softwarea berrerabili ahal izatea da; Izan ere, software-ingeniaritzaren funtsezko premisetako bat da hori. Objektu generiko batek portaera-multzo bera izan beharko luke hainbat proiektutan, batez ere proiektu horiek neurri batean bat datozenean, erakunde handietan gertatzen den bezala. Alde horretatik, objektuak berriz erabiltzeko moduko pieza gisa ikus daitezke, hainbat proiektutan erabil daitezkeenak. Horrela, softwarearen industriak tamaina handiko proiektuak eraiki ahal izango ditu, lehendik sortuak dauden eta kalitate onekoak diren osagaiak erabiliz, garapen-denbora izugarri murriztuz.
Adibide bat jartzearren, demagun objektua "Aluminioa" dela. Datuak (dentsitatea, xaflakortasuna, etab.) eta bere "portaera" (bi pieza soldatu, etab.) definitu ondoren, "Aluminio" objektua berrerabil daiteke eraikuntzaren hainbat esparrutan: automobilen eraikuntzan, hegazkingintzan etab. Hala ere, softwarearen berrerabilpenaren ideiak bi zailtasun nagusi aurkitu izan ditu: benetan generiko diren objektuen diseinua ez da ondo ulertua izan, eta berrerabilpenerako aukeren komunikaziorako metodologia falta da. Badira arazo horri aurre egiteko laguntza eskaintzen duten komunitateak.
Plataformaren independentea
[aldatu | aldatu iturburu kodea]Java programazio-lengoaia plataformaren independentea dela esaten denean, Java lengoaian idatzitako programak edozein hardwaretan exekuta daitezkeela esan nahi du, Javaren "Write once, run anywhere"[2] axiomak dioenari jarraituz. Java-n idatzitako iturburu-kodea konpilatu ondoren, Java bytecode izeneko kode eramangarria sortzen da. Jatorrizko iturburu-kodearen eta konputagailuak ulertzen duen makina-kodearen artean dagoen kode hori Java virtual machine (JVM) makina birtualean exekutatzen da. Kontuan izan behar da, nahiz eta konpilazio-fase jakin bat egon, sortutako kode eramangarria Just In Time (JIT)[17] konpiladoreak exekuzio-fasean interpretatu eta bihurtzen duela makina-kode. Dispositibo bakoitzaren ezaugarrietara iristeko, liburutegi gehigarriak ere eskaintzen dira.
Kodearen eramangarritasuna lortzeko, hasierako inplementazioek makina birtual interpretatu bat erabiltzen zuten. Baina horrela exekutatutako programak C edo C++ lengoaietan idatzitako programak baino motelagoak ziren. Horrela irabazi zuen Javak errendimendu moteleko lengoaia izatearen ospea. JVMren azken inplementazioekin aurrekoekin baino askoz azkarrago exekutatzen dira programak, nahiz eta oraindik ere beste lengoaia batzuk baino motelagoak izaten jarraitzen duten.
Eramangarritasuna lortzea teknikoki zaila da eta Javak neurri batean eramangarri izatea lortu badu ere, haren arrakasta ez da erabatekoa izan. Egia da posible dela arkitektura desberdineko plataformetan ondo exekutatzen diren Java programak idaztea, baina erroreak izaten dira. Horrek eraginda, Sun Microsystems-en "Write once, run anywhere" eslogana ("idatzi behin, exekutatu edonon") beste "Write once, debug everywhere" ("idatzi behin, zuzendu leku guztietan") esloganarekin parodiatu izan da.
Esan beharra dago, Javaren eramangarritasunak arrakasta handia izan duela web-zerbitzarien aplikazioetan, txertatutako Java inguruneak erabiliz: Web zerbitzuetan, zerbitzarien ahalmenak hedatzen dituzten servlets-etan, JavaBeans-etan[18], Open Services Gateway initiative (OSGi)-etan oinarritutako sistema txertatuetan, etab.
Aplikaziorako esparruak
[aldatu | aldatu iturburu kodea]Informatikaren industriaren hainbat esparrutan Java izan da hazkuntza handienetakoa eta erabilera zabalenetakoa lortu dituen programazio-lengoaia, haren diseinuari, eskaintzen duen sendotasunari eta lortu duen eramangarritasun mailari esker. Honakoetan aurkitzen da, batez ere:
- Gailu mugikorretan eta sistema txertatuetan. Java Micro Edition (Java ME) plataforma bereziki diseinatuta dago baliabide mugatuak dituzten dispositiboetarako, eta horri esker Java erraz aurki daiteke PDA (Personal Digital Assistant) edo laguntzaile digital pertsonaletan, telefono mugikorretan, etxetresna elektrikoetan, etab.[19]
- Web-nabigatzaileetan. Javaz idatzitako aplikazio txikiak (applet-ak) web-orrietan erraz txerta daitezke. Web-nabigatzaileek Java virtual machine (JVM) makina birtuala plugin edo hedapen moduan konfiguratuta izaten dute eta bertan exekutatzen dira. Exekuzio aldetik motelak izateagatik, denboratekin web-orrietarako bestelako teknologiak garatu izan dira: ActiveX, Java Web Start, etab
- Zerbitzari-sistemetan. Java servlet espezifikazioa eta Java Server Pages (JSP) sortu zirenetik, sekulako arrakasta lortu du zerbitzari-sistemetan. Zerbitzariaren ahalmenak handitzeko klaseak dira servlet-ak, normalean web-zerbitzarietan ostatu duten aplikazioak hedatzeeko erabiltzen direnak; web-zerbitzarietan exekutatzen diren Java applet modukoak dira. JavaServer Pages (JSP)-ak web-orri dinamikoak garatzeko teknologia bat dira, PHP-ren modukoa, baina Java pogramazio-lengoaia erabiltzen duena. servlet-ak eta JSP-ak funtsezkoak bihurtu dira zerbitzarietarako web-aplikazio dinamikoen garapenean.
- Mahaigaineko aplikazioetan: Oinarrian Java duten aplikazio grafiko ugari dago gaur egun, ordenadore pertsonaletan ohikoen diren sistema eragileetan erabiltzeko modukoak. Java-aplikazio askok paketean bertan txertatzen dute, aplikazioa konputagailu guztietan exekutatu dadin. Java programetarako GUI erabiltzaile-interfaze grafikoa ahalbidetzen duen Swing tresnari esker Javaz idatzitako mahaigaineko aplikazioak asko zabaldu ziren.
Ohikoenak diren plataforma guztietarako existitzen da JVM makina birtuala: Microsoft Windows, Apple Mac OS, GNU/Linux, etab. nahiz eta denek ez duten hura lehenetsita ekartzen.
Erlazionatutako industria
[aldatu | aldatu iturburu kodea]Sun Microsystems enpresak, Java programazio-lengoaiaren eta Java Development Kit (JDK) garapenerako ingurunearen sortzaile izanik, lengoaiaren[20] eta makina birtualaren[21] espezifikazio bat mantentzeko politika sendoa dauka. Ahalegin horri esker, Java de facto estandar bat da, Java Community Process (JCP) mekanismo formalak kontrolatua.
Javarako aplikazioak garatzen dituzten edota teknologia horrekin buru-belarri lanean ari diren konpainiak asko dira. Hona hemen batzuk:
- Telefonia mugikorraren industriak Java teknologiaren eragin handia jasotzen du.
- Netbeans eta Eclipse garapen-inguruneek arrakasta handia dute Java garatzaileen komunitatean.[22]
- Apache fundazioak garrantzia handia du Javan oinarritutako liburutegi eta zerbitzarietarako osagaien garapenean.[23]
- IBM eta Oracle enpresek, adibidez, Javan eta Javarako sortutako produktu asko eta interes handia dituzte.
Sintaxia
[aldatu | aldatu iturburu kodea]Javaren sintaxia C++ lengoaiatik dator neurri handi batean. Hala ere, C++ ez bezala, Java hasieratik objektuetara orientatua izateko diseinatu zen. Javan dena da objektu bat (salbuespen batzuk izan ezik), eta dena dago klaseren batean (klasea objektuak sortzeko moldea da).
C++ek ez bezala, Javak ez du eragileen gainkargarik onartzen, hau da, ez da posible izen bereko eragile desberdinak definitzea[24] eta klaseek ez dute herentzia anizkoitzik onartzen, hau da, ezin dituzte super-klase bat baino gehiagotatik portaerak edo ezaugarriak hartu
Ezaugarriak
[aldatu | aldatu iturburu kodea]Datu-motak
[aldatu | aldatu iturburu kodea]Aldagaiei hasierako balio bat esleitu ohi zaie, horrela aldagaiari balioaren mota hori lotzen baitzaio.[25]
Javak ondoko oinarrizko datu-motak ezagutzen ditu:
| Datu mota | Klase bilgarria |
byte |
java.lang.Byte |
char |
java.lang.Character |
short |
java.lang.Short |
int |
java.lang.Integer |
long |
java.lang.Long |
float |
java.lang.Float |
double |
java.lang.Double |
boolean |
java.lang.Boolean |
void |
java.lang.Void |
Agindu-motak
[aldatu | aldatu iturburu kodea]Oinarrizko aginduak esleipena (datu_mota aldag_izena = balioa) eta datu-idazketak (System.out.println) dira.[26]
Adibidea:
//Oinarrizko esleipenaren adibidea
int Adina = 24;
//Oinarrizko datu pantailaratzearen adibidea
System.out.println(Adina);
Kontrol-egiturak
[aldatu | aldatu iturburu kodea]Baldintzapeko egiturak
[aldatu | aldatu iturburu kodea]if egiturak balio du agindu-multzo bat soilik kasu batzuetan egikaritzeko, baldintza bat betetzen denean, alegia. Kontrol-egitura hau programazio-lengoaia guztietan dago.[27]Egituraren eredua hau da:
if (baldintza) {
baldintza hori egia bada gauzatuko diren aginduak
} else {
baldintza hori gezurra bada gauzatuko diren aginduak
}
Adibidea:
if (i > 0) {
System.out.println("i aldagaiaren balioa 0 baino handiagoa da");
} else {
System.out.println("i aldagaiaren balioa ez da 0 baino handiagoa");
}
Baldintza espresio boolear baten bidez adierazten da. Baldintza betetzen bada, segidan duen agindu multzoa egikarituko da. Baldintza bete ezean, else adarra baldin badago adar horri dagokion agindu-multzoa egikarituko da. Ez badago else adarra, berriz, egitura honetan ez da ezer egingo. Hautazkoa da else adarra idaztea. if egiturak konplexuagoak egin daitezke else if erabiliz[27]:
if (baldintza 1) {
baldintza 1 egia bada gauzatuko diren aginduak
} else if (baldintza 2) {
baldintza 1 gezurra bada eta baldintza 2 egia bada gauzatuko diren aginduak
} else {
bi baldintzak gezurra badira gauzatuko diren aginduak
}
Adibidea:
if (i > 0) {
System.out.println("i aldagaiaren balioa 0 baino handiagoa da");
} else if (i < 0) {
System.out.println("i aldagaiaren balioa 0 baino txikiagoa da");
} else {
System.out.println("i aldagaiaren balioa 0 da");
}
Iterazio-egitura
[aldatu | aldatu iturburu kodea]while loop kontrol-egitura
[aldatu | aldatu iturburu kodea]Egitura errepikakor orokorrena da while. Honela erabiltzen da[28]:
while (baldintza) {
agindua 1;
agindua 2;
...
agindua n;
}
Adibidea:
int Karratua200BainoHandiagoa = 0;
while (Karratua200BainoHandiagoa * Karratua200BainoHandiagoa < 200) {
Karratua200BainoHandiagoa = Karratua200BainoHandiagoa + 1;
}
do...while loop kontrol-egitura
[aldatu | aldatu iturburu kodea]while loop kontrol-egituraren antzekoa da baina honetan baldintza agindua exekutatu ondoren ebaluatzen da[28]:
do {
agindua;
} while (baldintza);
for loop kontrol-egitura
[aldatu | aldatu iturburu kodea]Egitura errepikakor honekin posible da zerrenda eta datu-egitura batzuetan (zerrendak, bektoreak edo matrizeak, batez ere) elementu bakoitzerako agindu batzuk errepikatzea. Honela idazten da[28]:
for (baldintza) {
agindua;
}
Adibidea:
for (int i = 0; i < 100; i++) {
System.out.println(i + "\t" + i * i);
}
foreach loop kontrol-egitura
[aldatu | aldatu iturburu kodea]foreach kontrol-egiturak multzo bateko elementu guztietatik banan-banan iteratzea ahalbidetzen du adierazitako datu-mota mantentzen den bitartean[28]:
for (elementu_mota elementua: multzoa) agindua;
Adibidea:
String[] egunak = {"Astelehena", "Asteartea", "Asteazkena", "Osteguna", "Ostirala", "Larunbata", "Igandea"};
for (String eguna : egunak) {
System.out.println(eguna);
}
Azpiprogramak, funtzioak
[aldatu | aldatu iturburu kodea]Funtzioek, agindu multzo bat exekutatu eta emaitza bat itzultzen dute. Oso erabilgarriak dira algoritmo zailak ebaztean, gure problema azpiproblema sinpleagotan banatzea eta azpiproblema bakoitza bere aldetik ebaztea ahalbidetzen dutelako. Emaitza, sarrera-parametroen araberakoa izan daiteke, eta honela eraikitzen da[29]:
emaitza_mota funtzioaren_izena (parametro_mota parametro_izena, ... ) {
agindua 1;
agindua 2;
...
agindua n;
}
Aplikazio autonomoak
[aldatu | aldatu iturburu kodea]Adibide honek azalpen txiki bat behar du.
- Javan dena klase baten barruan dago, programa autonomoak barne.
- Iturburu-kodea artxiboetan gordetzen da Artxibo horiek, barruan duten klasearen izen bera eta ".java" luzapena dute.
- Konpiladoreak klase-fitxategi bat sortzen du (".class" luzapenarekin) iturri-fitxategian definitutako klase bakoitzeko.
- Modu independente eta autonomoan gauzatzen diren programek
”main()”metodoa izan behar dute. ”void”hitz erreserbatuak, main metodoak ez duela ezer itzultzen adierazten du .- Main metodoak, String motako objektuen array bat onartu behar du. Adostasunez,
”args”gisa aipatzen da, baina beste edozein identifikatzaile erabil daiteke. ”static”hitz erreserbatuak, metodoa klase-metodo bat dela adierazten du, klaseari lotua, haren instantzia bati lotua egon beharrean. Main metodoa, estatikoa edo "klasekoa" izan behar da.publichitz erreserbatuak, metodo bat beste klase batzuetatik deitua izan daitekeela esan nahi du, edo klasea, klase horren hierarkiatik kanpoko beste klase batzuek erabil dezaketeela. Beste sarbide mota batzuk”private”edo”protected”dira.- Inprimatzeko baliagarritasuna (pantailan, adibidez) Javaren liburutegi estandarraren parte da: ''System'' klaseak ''out'' izeneko eremu publiko estatikoa definitzen du. Out objektua ''PrintStream'' ren instantzia bat da, pantailan datuak iraultzeko ''println (String) '' metodoa eskaintzen duena (irteera estandarra).
- Aplikazio autonomoak, Javaren exekuzio-inguruneari erabili beharreko klasearen izena emanez gauzatzen dira. Adibidez,
java –cp . Kaixoformako komando lerro batek (Unixen edo Windowsen) adibideko programa exekutatuko du (aldez aurretik konpilatuta eta "Kaixo.class" sortuta). [30]
Kaixo mundua -ren adibideak:
public class KaixoMundua {
public static void main(String[] args) {
System.out.println("Kaixo, mundua!");
}
}
public class KaixoMundua {
public static void main(String[] args) {
System.out.print("Kaixo,");
System.out.print(" mundua!");
}
}
Java applet-ak
[aldatu | aldatu iturburu kodea]Java applet bat Java programazio-lengoaian idatzitako aplikazio txiki bat da, Java bytecode edo kode eramangarri moduan konpilatu dena eta erabiltzaileei banatzen zaiena. Normalean web-orrietan txertatuta egoten dira applet-ak eta erabiltzailearen Java virtual machine (JVM) makina birtualean exekutatzen dira, web-nabigatzailean baina aparteko prozesu baten moduan.[31]
normalean, nabigatzaile batean to Java bytecode, and delivered to users in the form of Java bytecode. The user launched the Java applet from a web page, and the applet was then executed within a A Java applet could appear in a frame of the web page, a new application window, Sun's AppletViewer, or a stand-alone tool for testing applets.bat.[31]
// Kaixo.java
import javax.swing.JApplet;
import java.awt.Graphics;
public class Kaixo extends JApplet {
public void paint(Graphics g) {
g.drawString("Kaixo, mundua!", 65, 95);
}
}