Edukira joan

Java (programazio-lengoaia)

Wikipedia, Entziklopedia askea
 Java (programazio-lengoaia)
Jatorria
Egilea(k)James Gosling
Sorrera-urtea1995
Jatorrizko herrialdeaAmeriketako Estatu Batuak
Azken bertsioaJava SE 24
Honen izena daramaJava coffee (en) Itzuli
Ezaugarriak
Programazio paradigmaprogramazio egituratu, Objektuetara bideratutako programazioa, Programazio funtzional, Programazio inperatibo, class-based programming (en) Itzuli, reflective programming (en) Itzuli, generic programming (en) Itzuli, concurrent object-oriented programming (en) Itzuli eta component-based software engineering (en) Itzuli
Media motaapplication/java-archive
Egile-eskubideakcopyrightduna
LizentziaGNU General Public License
Deskribapena
OinarrituaOak
Honen parte daJava platform (en) Itzuli
Honen eragina jaso duC++, C, Ada, Simula 67, Smalltalk, Objective-C, Object Pascal, Oberon, Eiffel (en) Itzuli, Modula-3, Mesa (en) Itzuli, Simula, C Sharp, UCSD Pascal (en) Itzuli, boxing (en) Itzuli, variadic function (en) Itzuli, Java annotation (en) Itzuli, Niklaus Wirth, Patrick Naughton (en) Itzuli eta foreach loop (en) Itzuli
Ekoizpena
DiseinatzaileaJames Gosling eta Sun Microsystems
GaratzaileaSun Microsystems eta Oracle Corporation
MaskotaDuke (en) Itzuli

oracle.com…
Twitter: java Youtube: UCmRtPmgnQ04CMUpSUqPfhxQ Edit the value on Wikidata

Java objektuei zuzendutako programazio lengoaia eta plataforma informatiko bat da, 1995ean Sun Microsystems enpresak merkaturatua.

Aplikazio eta webgune askok ez dute funtzionatuko Java instalatuta eduki ezean, eta egunetik egunera gehiago sortzen dira. Java azkarra, segurua eta fidagarria da. Eramangarrietatik datu-zentroetara, jokoetarako kontsoletatik hasi eta super ordenagailuetara, telefono mugikorretatik Internetera, Java nonahi dago. 2012tik aurrera, erabiltzen den programazio lengoaiarik ezagunenetako bat da, batez ere web bezero eta zerbitzarien aplikazioetarako, hamar milioi erabiltzaile berriaturekin[1][2].

James Goslingek diseinatu zuen nagusiki, Sun Microsystems enpresan ziharduela, 1990eko hamarkadan. "Write once, run anywhere" filosofiari jarraituz, sistema anitzetan erraz inplementatzeko taxutu zuten hasieratik, iturburua helburuko plataformaren arabera era desberdinean konpilatu behar izan gabe etengabe (helburuko plataformak zeharka exekutatzen du kodea, "Java Virtual Machine" edo JVM bat tarteko). C eta C++-en antza du, baina sintaxia, eta batik bat memoria kudeaketa, sinpleagoak dira.

Sun konpainiak Javako konpiladoreentzako, makina birtualentzako eta klase-liburutegietako jatorrizko erreferentziazko ezarpena garatu zuen 1991n, eta 1995ean argitaratu zituen lehen aldiz. 2007ko maiatzetik aurrera, Java Erkidegoko Prozesuaren zehaztapenak betez, Sunek berriz lizentziatu zituen Javako bere teknologia gehienak, GNUren Lizentzia Publiko Orokorraren pean. Beste batzuek, Sun teknologia hauen ordezko inplementazioak ere garatu dituzte, hala nola GNU Java Konpiladorea eta GNU Classpath.[3]

Javak eta JavaScriptek ez dute zerikusi zuzenekorik, nahiz eta biak C-ren bezalako sintaxia erabili.[4]

Historia

Java, set-top-box proiektu batean erabiltzeko programazio tresna bat bezala sortu zen the Green Project izeneko operazio txiki batean Sun Microsystemsen 1991n. Taldeak (Green Team), hamahiru lagunek osatua eta James Goslingek zuzendua, 18 hilabetez lan egin zuen Sand Hill Roaden, Menlo Parken, bere garapenean.

Hasieran Oak izena hartu zuen (Goslingen bulegotik kanpo zegoen haritz bategatik), ondoren Green izena hartu zuen, Oak jada txartel grafikoen egokitzaileentzat erregistratutako marka komertzial bat zela deskubritu ondoren, eta, azkenik, Java bezala berrizendatu zen.

Ez dago argi Java akronimo bat den edo ez, nahiz eta iturri batzuek adierazi bere diseinatzaileen inizialak izan daitezkeela: James Gosling, Arthur Van Hoff, eta Andy Bechtolsheim. Beste batzuek hurrengo akronimoaren alde egiten dute: Just Another Vague Acronym ("beste akronimo anbiguo bat besterik ez"). Hala ere, indar gehien duen hipotesia da, Javak bere izena gertuko kafetegian dagoen kafe mota bati zor diola; hortik Javaren ikonoa kafe kikara bero bat izatea. Teoria honi indarra ematen dion zeinu txiki bat, konpiladoreak sortzen dituen artxibategietako lehen lau byteak (zenbaki magikoa), hexadezimalez, 0xCAFEBABE direla da. Teoria horiek guztiak gorabehera, izena, dirudienez, hitzezko ausazko zerrenda batetik atera zuten[5].

Duke, Javako maskota.

Goslingen helburuak makina birtual bat eta C++ antzeko egitura eta sintaxia duen lengoaia bat ezartzea ziren. 1994ko ekaina eta uztaila bitartean, John Gaga, James Gosling, Patrick Naughton, Wayne Rosing eta Eric Schmidten arteko hiru eguneko saio maratoniarraren ondoren, taldeak plataforma Web gunerantz birbideratu zuen. Mosaic web nabigatzailearen etorrerak Internet kable bidezko telebista bezala bitarteko interaktibo bihurtzea ekarriko zuela sentitu zuten. Naughtonek, orduan, nabigatzaile prototipo bat sortu zuen, WebRunner, beranduago HotJava bezala ezagutua izango zena.[6]

1994an, HotJava eta Java plataformaren erakustaldi bat egin zitzaien Sungo exekutiboei. Java 1.0a 1994an deskargatu ahal izan zen lehen aldiz, baina 1995eko maiatzaren 23ra arte itxaron behar izan zen, SunWorldeko[7] hitzaldietan, Java eta HotJavak, argia ikusi zuten arte. John Gage Sun Microsystemseko zuzendari zientifikoak iragarri zuen gertaera. Ekitaldiaren batera, sorpresa txiki bat iragarri zuten, Marc Andreessenek, Netscapeko[8] presidenteorde exekutiboak, Java bere nabigatzaileetan jasango zuela iragarri zuenean. Hurrengo urteko urtarrilaren 9an, Sunek JavaSoft enpresa taldea sortu zuen garapen teknologikoaz ardura zedin[9]. Bi aste geroago, Javaren lehen bertsioa argitaratu zen.

Goslingen hasierako promesa Write Once, Run Anywhere (idatzi behin, edozein lekutan exekutatu) zen, plataforma erabilienentzat haietatik independentea zen lengoaia bat eta exekuzio ingurune (JVM) arin eta doako bat emanez, Java aplikazioen bitarrak (bytecode) edozein plataformatan exekutatu ahal izateko.

Exekuzio ingurunea nahiko segurua zen, eta web nabigatzaile nagusiek laster txertatu zuten web orrietan txertatutako Java appletak exekutatzeko aukera.

Javak aldaketa ugari izan ditu jatorrizko bertsiotik, JDK[10] 1.0, eta liburutegiko klase eta paketeen kopurua izugarri handitu da.[11]

J2SE 1.4 bertsiotik, hizkuntzaren bilakaera JCP (Java Community Process) delakoak arautu du, Java Specification Requests (JSRs) erabiltzen duena Java plataforman aldaketak proposatu eta zehazteko. Hizkuntza bera Java Language Specification (JLS) edo Java Hizkuntzaren Zehaztapenean zehaztuta dago. JLSetako aldaketak JSR 901ean kudeatzen dira.

Filosofia

Java lengoaia bost helburu nagusirekin sortu zen:

  1. Objektuetara bideratutako programazioaren paradigma erabili beharko luke.
  2. Programa bera sistema eragile anitzetan gauzatzeko aukera eman beharko luke.
  3. Besterik adierazi ezean, sareko lanerako euskarria izan beharko luke.
  4. Urruneko sistemetan kodea modu seguruan exekutatzeko diseinatu beharko litzateke.
  5. Erraz erabili beharko litzateke, eta objektuetara bideratutako beste lengoaietatik onena hartu, C++ adibidez.

Urruneko kodearen exekuzioa eta sareko euskarria lortzeko, Javako programatzaileek, batzuetan, CORBA (Common Object Request Broker Architecture), Internet Communications Engine edo OSGi bezalako luzapenak erabiltzen dituzte, hurrenez hurren.[12]

Objektuetara bideratua

Lehen ezaugarria, objektuetara bideratua ("OB"), programazio metodo bati eta lengoaiaren diseinuari buruzkoa da. OBrako interpretazio asko dauden arren, lehenengo ideia softwarea diseinatzea da, erabiltzen dituzten datu mota guztiak euren eragiketei lotuta egon daitezen. Hala, datuak eta kodea (funtzioak edo metodoak) objektu izeneko eremuetan konbinatzen dira. Objektu bat "portaera" (kodea) eta "egoera" (datuak) jasotzen dituen pakete gisa ikus daiteke. Printzipioa, aldatzen diren elementuak aldatzen ez direnetatik bereiztea da. Askotan, datu-egitura bat aldatzeak horren gainean jarduten duen kodea aldatzea dakar, edo alderantziz. Banatze horrek, oinarri egonkorragoa eskaintzen du software sistema bat diseinatzeko orduan. Honen helburua, proiektu handiak erraz kudeatu eta maneiatzea da, horien kalitatea hobetuz eta huts egindako proiektuen kopurua murriztuz.[13]

Objektuetara bideratutako programazioaren beste promesetako bat eremu generikoagoak (objektuak) sortzea da, softwarea proiektuen artean berrerabiltzea ahalbidetuko dutenak, Softwarearen Ingeniaritzaren funtsezko premisetako bat. "Bezero" objektu generiko batek, adibidez, teorian, portaera-multzo bera izan beharko luke hainbat proiektutan, batez ere proiektu horiek neurri batean bat datozenean, erakunde handietan gertatzen den zerbait. Alde horretatik, objektuak pieza berrerabilgarri 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. Aluminioa[14] erabil dezakegu objektuaren adibide gisa. Datuak (dentsitatea, xaflakortasuna, etab.) eta bere "portaera" (bi pieza soldatu, etab.) definitu ondoren, "Aluminio" objektua berrerabil daiteke eraikuntzaren, automobilaren, hegazkingintzaren eta abarren esparruan.

Softwarearen berrerabilpenak emaitza desberdinak izan ditu, eta bi zailtasun nagusi aurkitu ditu: objektu benetan generikoen diseinua oso gutxi ulertzen da, eta berrerabiltzeko aukeren komunikaziorako metodologia falta da. "Kode irekiko" (open source) komunitate batzuek arazo horretan lagundu nahi dute, garatzaileei objektu berrerabilgarrien eta objektu-liburutegien erabilerari eta aldakortasunari buruzko informazioa zabaltzeko baliabideak emanez.[15]

Plataformaren independentzia

Bigarren ezaugarriak, plataformaren independentziak, Java lengoaian idatzitako programak edozein hardware motatan berdin gauzatu daitezkeela esan nahi du. Hori da behin programa bat idazteko gai izatearen eta edozein gailutan exekutatu ahal izatearen esanahia, Javaren axiomak dioen bezala, "Write once, run anywhere".[16]

Horretarako, Java lengoaian idatzitako iturburu-kodea konbinatzen da, "Bytecode" (zehazki Java bytecode) izeneko kode bat sortzeko, Java plataformaren instrukzio makina sinplifikatu espezifikoak. Pieza hori, iturri kodearen eta helmuga gailua ulertzen duen makina kodearen artean "erdi bidean" dago. Bytecodea, orduan, makina birtualean (JVM) exekutatzen da, helmuga plataformaren jatorrizko kodean idatzitako programa bat (bere hardwarea ulertzen duena), kodea interpretatzen eta exekutatzen duena. Gainera, gailu bakoitzaren ezaugarrietara iristeko liburutegi gehigarriak hornitzen dira (grafikoak, hari edo thread bidezko exekuzioa edo sareko interfazea adibidez) modu bateratuan. Kontuan izan behar da, nahiz eta konpilazio-etapa esplizitu bat egon, sortutako bytecodea JIT (Just In Time)[17] konpiladoreak jatorrizko kodearen instrukzio makina gisa interpretatzen edo bihurtzen duela.[18]

Lengoaiaren lehen ezarpenek, eramangarritasuna lortzeko makina birtual interpretatu bat erabiltzen zuten. Emaitza, ordea, C edo C++n idatzitakoak baino motelago exekutatzen ziren programak ziren. Honek, Javak, errendimendu moteleko ospea irabaztea eragin zuen. JVMren azken ezarpenek bertsio zaharrak baino askoz azkarrago exekutatzen diren programak sortzen dituzte, hainbat teknika erabiliz, nahiz eta beste lengoaia batzuk baino askoz motelagoak izaten jarraitzen duen.[19]

Eramangarritasuna teknikoki zaila da lortzen, eta Javak eremu horretan izan duen arrakasta ezberdina izan da. Nahiz eta posible den arkitektura ezberdineko plataformetan zuzen jarduten duten Java plataformarako programak idaztea, horietako askok errore txikak izaten dituzte, batzuetan Sun eslogana, "Write once, run anywhere" ("idatzi behin, exekutatu edonon"), parodiatzera eramaten dutenak, adibidez, "Write once, debug everywhere"[20] ("idatzi behin, zuzendu leku guztietan") esanez.

Javaren plataformaren independentzia kontzeptuak, hala ere, arrakasta handia du zerbitzariaren inguruko aplikazioetan, hala nola Web Zerbitzuetan, Servletetan, Java Beansetan, baita OSGin oinarritutako sistema txertatuetan ere, txertatutako Java inguruneak erabiliz.[21]

Ezaugarriak

Datu motak

Aldagaiei hasierako balio bat esleitu ohi zaie, horrela aldagaiari balioaren mota hori lotzen baitzaio.

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

Oinarrizko aginduak esleipena (datu_mota aldag_izena = balioa) eta datu-idazketak (System.out.println) dira.

Adibidea:

//Oinarrizko esleipenaren adibidea
int Adina = 24;
//Oinarrizko datu pantailaratzearen adibidea
System.out.println(Adina);

Kontrol-egiturak

Baldintzapeko egiturak

if egiturak balio du agindu-multzo bat soilik kasu batzuetan egikaritzeko, baldintza bat betetzen denean, alegia. Kontrol-egitura hau programazio-lengoaia guztietan dago.

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:

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

while loop kontrol-egitura

Egitura errepikakor orokorrena da while. Honela erabiltzen da:

while (baldintza) {
   agindua 1;
   agindua 2;
   ...
   agindua n;
 }

Adibidea:

int Karratua200BainoHandiagoa = 0;

while (Karratua200BainoHandiagoa * Karratua200BainoHandiagoa < 200) {
  Karratua200BainoHandiagoa = Karratua200BainoHandiagoa + 1;
}
do...while loop kontrol-egitura

while loop kontrol-egituraren antzekoa da baina honetan baldintza agindua exekutatu ondoren ebaluatzen da:

do {
   agindua;
 } while (baldintza);
for loop kontrol-egitura

Egitura errepikakor honekin posible da zerrenda eta datu-egitura batzuetan (zerrendak, bektoreak edo matrizeak, batez ere) elementu bakoitzerako agindu batzuk errepikatzea. Honela idazten da:

for (baldintza) {
    agindua;
}

Adibidea:

for (int i = 0; i < 100; i++) {
  System.out.println(i + "\t" + i * i);
}
foreach loop kontrol-egitura

foreach kontrol egiturak multzo bateko elementu guztietatik banan-banan iteratzea ahalbidetzen du adierazitako datu mota mantentzen den bitartean:

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

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:

 emaitza_mota funtzioaren_izena (parametro_mota parametro_izena, ... ) {
   agindua 1;
   agindua 2;
   ...
   agindua n;
}


Sintaxia

Javaren sintaxia C++tik eratortzen da neurri handi batean. Hala ere, hau ez bezala, Java, hasieratik objektuetara erabat bideratua izateko eraiki zen. Javan dena objektu bat da (salbuespen batzuk izan ezik), eta klaseren batean dago (gogora dezagun klase bat hainbat objektu sortzeko moldea dela).

C++ek ez bezala, Javak ez du kategoria-gainkargarik[22] edo klaseetarako herentzia anizkoitzik, herentzia anizkoitza interfazeetarako eskuragarri dagoen arren.

Aplikazio autonomoak

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.
  • public hitz 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 . Kaixo formako komando lerro batek (Unixen edo Windowsen) adibideko programa exekutatuko du (aldez aurretik konpilatuta eta "Kaixo.class" sortuta).


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!");
     }
}

Appletsak

Java appletak beste aplikazio batzuetan txertatutako programak dira, normalean, nabigatzaile batean erakusten den web orri bat.

// 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);
    }

}


 <!-- Kaixo.html -->
<html>
  <head>
    <title>Applet Kaixo Mundua.</title>
  </head>
  <body>
    <applet code="Kaixo.class" width="200" height="200">
    </applet>
  </body>
</html>

Gaur egun, HTML 5ek <applet> etiketaren erabilera ezabatu du. Hala ere, oraindik badago HTML5en erabiltzeko modua. (Ingelesezko testua) Java Applets in HTML5.

importsententziak, Javako konpilatzaileari java.applet. Applet eta java.awt. Graphics klaseak barne har ditzala adierazten dio, izenen arabera aipatu ahal izateko, iturburu-kodean erabili nahi diren bakoitzean ibilbide osoa lehenetsi behar izan gabe.

Kaixo klasea Applet; klasera hedatzen (extends) da , hau da, honen azpiklasea da. Applet klaseari esker, aplikazioak appletaren egoera erakutsi eta kontrolatu dezake. Applet klasea AWT (Abstract Window Toolkit) delakoaren osagaia da, eta appletak erabiltzaile-interfaze grafikoa edo GUI (Graphical User Interface) erakustea eta erabiltzaileak sortutako gertaerei erantzutea ahalbidetzen du.

Kaixo klasea paint (Graphics) metodoaz gainkargatzen da (Applet , kasu honetan), marrazteaz arduratzen den kodean sartzeko. paint() metodoak Graphics objetu bat jasotzen du, appleta marrazteko testuinguru grafikoa duena. paint() metodoak objektuaren drawString (String, int, int) metodoari deitzen dio.[23]

Funtzionamendu-inguruneak

Javaren diseinuari, haren sendotasunari, industriaren babesari eta eramangarritasun errazari esker, Java izan da informatikaren industriaren hainbat esparrutan hazkunde eta erabilera zabalena izan duen lengoaietako bat.

  • Gailu mugikorretan eta sistema txertatuetan.[24]
  • Web nabigatzaileetan.
  • Zerbitzari-sistemetan.
  • Mahaigaineko aplikazioetan: Zerbitzariaren aldean, Java inoiz baino ezagunagoa da, Servlets eta JSP (Java Server Pages) espezifikazioa agertu zenetik.
  • Eutsitako plataformetan: Java JRE (Java Runtime Environment) exekuzio-ingurunearen bertsio bat mahaigaineko ekipo gehienetan dago eskuragarri.

Programazioa

Adierazpenak

Adierazpenak elementu edo token segida bat dira, literalekin ere bai, emaitza bat kalkulatzeko ebaluatu behar direnak. Tokenak programetako elementu txikienak dira, konpilatzailearentzat ulergarriak direnak. Javan tokenak bost kategoriatan banatzen dira:

Identifikatzaileak: Javaren kodean aldagai, mota, pakete, metodo eta konstanteei esleitutako izenei ematen zaizkien irudikapenak dira, konpiladoreak identifika ditzan eta programatzaileak uler ditzan. Javan, identifikatzaileek letra larriak edo xeheeak bereiz ditzakete, case sensitive delako; beraz, "Nirealdagaia" izena duen aldagaia ez da "nirealdagaia" ren berdina, Javak aldagai desberdin gisa identifikatzen baititu. Zenbakiak ere erabil daitezke, edo "_" zeinua, identifikatzaile bat esleitzeko.

Gako-hitzak: Javak kodean eta konpiladorean helburu espezifiko bat betetzeko erreserbatutako identifikatzaileak dira, modu mugatuan eta kasu espezifikoetan erabiltzen direnak. Javak erabiltzen dituen hitz gakoak honako hauek dira:

abstract boolean break byte case
catch char class continue default
do double else extends false
final finally float for if
implements import instanceof int interface
long native new null package
private protected public return short
static super switch syncronized this
throw throws transient true try
void volatile while var rest
byvalue cast const future generic
goto inner operator outer

Letra lodiz dauden hitzak, gaur egungo Javaren bertsioan erabiltzen ez badira ere, hitz gakoak dira, hurrengo bertsioetan txertatu nahi direnak.

Literalak eta konstanteak: Literalak, aldagai bati balioak esleitzeko elementuak dira, hau da, aldagai batek har dezakeen balioa (zenbakizkoa izan daitekeen balio konstante bat ere bada). Konstanteak, balio finkoa duten aldagaiak dira, kodean zehar alda ezin daitezkeenak; final eta static aldatzaileen bidez deklaratzen dira.

final static double pi= 3.1416;

Operadoreak: Identifikatzaile edo konstante bati buruz objektu edo datu bati aplikatzen zaion ebaluazio bat adierazten digutenak dira. Operadoreen adibide batzuk batuketa, kenketa edo biderketa izan daitezke.

Bereizgailuak: Javako konpiladoreari kodeko elementuen kokapena adierazteko erabiltzen dira. Javak onartzen dituen bereizgailuak hauek dira: { },:;

Javako konpiladoreak iruzkinak ere identifikatzen eta ezabatzen ditu, baita espazio hutsak eta tabulaziokoak ere, eta, beraz, ez dira token baten zatitzat hartzen.

Adierazpenak aldagaien, operadoreen eta metodoen konbinazioa izan daitezke. Adierazpenak kalkuluak egiteko, aldagaiei balioak esleitzeko edo programaren fluxua kontrolatzeko erabiltzen dira.

Operadoreak

Javaren adierazpenak dira, eragiketa bat egin ondoren emaitza bat itzultzen dutenak. Operadore batek maneiatzen duen operadore kopuruaren arabera, bi motatakoa izan daiteke: unarioa edo bitarra.

Operadore unarioak balio bat itzultzeko operadore bakarra behar dutenak dira.

Operadorea Deskribapena
- Zeinu aldaketa
! NOT operadorea
~ 1-ari osagarria

Operadore bitarrak balio bat itzultzeko bi operadore edo gehiago behar dituztenak dira.

Operadoreak Deskribapena
+ - * / % Operadore aritmetikoak
== != < > <= >= Operadore erlazionalak
&& || ^ Operadore boolearrak
^ << >> >>> Operadoreak bit mailean
+ Kateen kateatzea

BIT mailako operadoreak

~ 1-ari osagarriak digituak inbertitzen ditu, 0tik 1era eta 1etik 0ra aldatuz. Adibide bat izan daiteke:

  11001011
~ 11001011 emaitza 00110100

Ikus daitekeenez, balioak 0tik 1era eta 1etik 0ra aldatzen dira. & AND bit-mailan, AND eragiketa egiten du bit-zenbaki biren artean. Eragiketa horretan, bi bitak 1 baldin badira, emaitza 1 izango da; bestela 0 izango da. Adibide bat izan daiteke:

 egoera
   01001101
 & 10011011 
______________ 
   00001001

| OR bit-mailan, OR eragiketa bat egiten du. Eragiketa horretan, bi bitetako bat 1 bada, emaitza 1 izango da. Adibide bat izan daiteke:

   11001101
 | 01011101
______________
   11011101

^ XOR bit-mailan, XOR eragiketa egiten du. Eragiketa horretan, bi zenbakiak berdinak badira, emaitza 0 izango da; bestela, 1 izango da. Adibide bat izan daiteke:

  00101001

^ 01101101 ______________

01000100

< < Desplazamendua ezkerrera, operadore horrek bitak n posizio mugitzen ditu ezkerrera. Adibidez, n=1 izanda:

01101110

01101110 << 1 = 11011100

Desplazamenduan ikus daitekenez, 0 digitu bat txertatzen da eskuinetara.

Operadoreen lehentasuna

Operadoreak adierazpenen zati nagusi bat dira, eta erabilera mota eta modua funtsezkoa da programatzeko orduan, baina horiek erabiltzeko arau batzuk hartu behar dira kontuan, operadoreen lehentasuna, esaterako.

Operadoreak beren lehentasunaren arabera exekutatzen dira: lehentasun handiagoa badute, lehentasun txikiagoko operadoreak baino lehenago ebaluatuko dira; kasualitatez lehentasun-maila bereko operadoreak aurkezten badira, horiek eskuinetik ezkerrera ebaluatuko dira; eta operadore bitarrak badira (esleipen-operadoreak izan ezik), ezkerretik eskuinera ebaluatuko dira. Hala ere, "()" parentesien bidez, Javari adieraz dakioke zein operadore ebaluatu behar duen lehendabizi, bere lehentasuna kontuan izan gabe; horrela, Javaren konpiladoreak, lehenik parentesien barruan dauden eragiketak gauzatu behar dituela interpretatzen du, eta gero gainerako operadoreekin jarraitu.

Taula honetan Javan erabilitako operadoreak sailkatzen dira haien lehentasun-mailaren arabera, maila altuena goian kokatua egonik:

Operadore motak Operadoreak
Operadore posfinkoak [ ] . (parametroak) espr++ espr--
Operadore unarioak ++espr --espr +espr -espr ~ !
Sortzea edo bihurtzea New (mota) espr
Biderketa * / %
Gehiketa + -
Desplazamendua << >> >>>
Konparaketa < > <= >= instanceof
Berdintasuna == !=
AND bit-mailan &
OR bit-mailan |
XOR bit-mailan ^
AND logikoa &&
OR logikoa ||
Baldintza ? :
Asignazioa = += -= *= /= %= &= ^= |= <<= >>= >>>=

Javako operadoreen lehentasunaren adibide bat honako hau izan daiteke: kode bat dugu, eragiketa aritmetiko batzuk egiteaz arduratuko dena:

int zenbakia1 = 3;
int zenbakia2 = 4;
int emaitza;
emaitza = zenbakia1 + zenbakia2 * 3;
System.out.println (emaitza); //Honek pantailaratuko du 15 zenbakia.

Operadoreen lehentasunaren arabera, "*" biderketak, "+" batuketak baino lehentasun handiagoa du; beraz, lehenik biderkatzea gauzatzen da eta gero batuketa egiten da.

int zenbakia1 = 3;
int zenbakia2 = 4;
int emaitza;
emaitza = (zenbakia1 + zenbakia2) * 3;
System.out.println (emaitza); //Honek 21 zenbakia pantailaratuko du.

Kasu horretan, emaitza aldatu egiten da; izan ere, lehenik, parentesiaren barruan dauden parametroak ebaluatzen dira, eta ondoren gainerakoak. Javak garapenerako ematen duen gomendioetako bat 3 operadore baino gehiagoko eragiketetan parentesiak erabiltzea da; horrela, kodea irakurtzea errazagoa egiten da eta akatsak saihesten dira konpilatzeko unean.

Sententziak

Sententziak, egiten diren ekintza sekuentzia baten irudikapena dira. Javako sententziak, esleipen-sententziak, baldintzazko-sententziak, begizta-sententziak eta jauzi-sententziak izan daitezke, eta oro har, instantzia batek eta operadore batek osatzen dituzte. Sententzia bat amaitu dela eta hurrengoarekin jarrai dezakeela adierazten duen adierazlea puntu eta koma (;) zeinua da. Adibide bat esleipen-sententzia da, aldagai bateko instantzia batek, esleipen-zeinuak eta esamolde batek osatzen dutena. Hona hemen adibide bat:

int aldagaia = 12+2;

Esleipen-sententzietan, balio bat esleitzen zaio aldagai edo konstante bati. Baldintzazko-sententziak, programaren exekuzio-fluxua definitzeko baldintza bat adierazten dutenak dira; besteak beste, if-else eta switch ditugu. Begizta-sententziek ekintza bat egiten dute denbora jakin batez, edo baldintza bat bete arte; horien artean ditugu while, do-while, eta for. Jauzi-sententziek konpilatzailea  programako puntu zehatz batera edo hurrengo sententziara eramaten dute konpilatzailea; besteak beste, break, continue eta return ditugu.

Erlazionatutako industria

Sun Microsystemek, Java programazio-lengoaiaren eta JDK plataformaren sortzaile gisa, JCP bidez lengoaiaren[25] eta makina birtualaren[26] espezifikazio bat mantentzeko politika sendoak mantentzen ditu.

Zenbaezinak dira Javarako aplikazioak garatzen dituzten eta/edo teknologia honekin iraulita dauden konpainiak:

  • Telefonia mugikorraren industriak Java teknologiaren eragin handia du.
  • Netbeans eta Eclipse garapen inguruneek leku garrantzitsua hartu dute Java garatzaileen komunitatearen artean.[27]
  • Apache fundazioak ere presentzia handia du Javan oinarritutako liburutegi eta zerbitzari osagaien garapenean.[28]
  • IBM, BEA, IONA, Oracle... enpresek, Javan eta Javarentzat sortutako produktuak eta interesak dituzte.

Kritikak

Java, berez, software konplexuaren kudeaketan bide berri bat irekitzeko sortua izan zen, bere “Write once, run anywhere” filosofiari jarraituz, eta orokorrean, alderdi horretan ondo jokatu du. Hala ere, ezin da esan Javak pitzadurarik ez duenik, ezta programazio estilo guztietara erabat egokitzen denik ere, ingurune guztietara, edo behar guztietara.

Kanpoko Loturak

Oracle - Sun

Tutorialak

Kritikak

Erreferentziak

  1. «Programming Language Popularity» web.archive.org 2009-01-16 (kontsulta data: 2019-10-17).
  2. «TIOBE Index | TIOBE - The Software Quality Company» www.tiobe.com (kontsulta data: 2019-10-17).
  3. «GNU Classpath - GNU Project - Free Software Foundation (FSF)» www.gnu.org (kontsulta data: 2019-11-28).
  4. (Gaztelaniaz) «JavaScript» Documentación web de MDN (kontsulta data: 2019-11-28).
  5. «Jonathan Schwartz's Blog: Different Isn't Always Better, But Better's Always Different» web.archive.org 2009-09-05 (kontsulta data: 2019-10-17).
  6. «The HotJava Browser» www6.uniovi.es (kontsulta data: 2019-11-28).
  7. «New Build & Resale Properties, Villas, Townhouses, Apartments. Property for sale in Spain - Sunworld» www.sunworld.es (kontsulta data: 2019-11-28).
  8. (Ingelesez) «Internet | Top Ten Reviews» www.toptenreviews.com (kontsulta data: 2019-11-28).
  9. «Oracle and Sun Microsystems | Strategic Acquisitions | Oracle» www.oracle.com (kontsulta data: 2019-10-17).
  10. «Java SE Development Kit 8 - Downloads» www.oracle.com (kontsulta data: 2019-11-28).
  11. (Gaztelaniaz) (PDF) Dibujando sobre lienzos en Java. .
  12. (Gaztelaniaz) «IBM Knowledge Center» www.ibm.com (kontsulta data: 2019-11-28).
  13. (Gaztelaniaz) «Programación Orientada a Objetos - EcuRed» www.ecured.cu (kontsulta data: 2019-11-28).
  14. «1.5. Herencia: reutilización de interfaces» arco.esi.uclm.es (kontsulta data: 2019-11-28).
  15. «¿Qué es Open Source? - Tecnología Fácil» tecnologia-facil.com (kontsulta data: 2019-11-28).
  16. (Gaztelaniaz) RubénBC, por. (2016-06-09). «“Write Once, Run Anywhere”» NXTER.ORG (kontsulta data: 2019-11-28).
  17. «Understanding JIT compiler (just-in-time compiler)» Aboullaite Med 2017-08-31 (kontsulta data: 2019-11-28).
  18. «The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 924» www.jcp.org (kontsulta data: 2019-11-28).
  19. «Programación en C++ - Wikilibros» es.wikibooks.org (kontsulta data: 2019-11-28).
  20. (Gaztelaniaz) RubénBC, por. (2016-06-09). «“Write Once, Run Anywhere”» NXTER.ORG (kontsulta data: 2019-11-28).
  21. (Gaztelaniaz) «JSP-Servlet: Qué es un Java Bean?» Programación Web Full Stack 2017-10-24 (kontsulta data: 2019-11-28).
  22. (Ingelesez) Archiveddocs. «Operator Overloading (C# vs Java)» docs.microsoft.com (kontsulta data: 2019-10-25).
  23. «Deploying Applets in a Mixed-Browser Environment» web.archive.org 2006-06-29 (kontsulta data: 2019-10-25).
  24. «Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle» www.oracle.com (kontsulta data: 2019-10-25).
  25. «Java SE Specifications» docs.oracle.com (kontsulta data: 2019-10-27).
  26. «Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle» www.oracle.com (kontsulta data: 2019-10-27).
  27. «Eclipse IDE for Java Developers | Eclipse Packages» www.eclipse.org (kontsulta data: 2019-11-28).
  28. «Welcome! - The Apache HTTP Server Project» httpd.apache.org (kontsulta data: 2019-11-28).

Kanpo estekak

Wikimedia Commonsen badira fitxategi gehiago, gai hau dutenak: Java (programazio-lengoaia) Aldatu lotura Wikidatan
  1. https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java/Funciones Programación en Java
  2. https://en.wikibooks.org/wiki/Java_Programming Java Programming