Saltu al enhavo

Java (programlingvo)

El Vikipedio, la libera enciklopedio
Ĉi tiu artikolo temas pri programlingvo. Por insulo rigardu la paĝon Javo. Por (homa) lingvo legu la artikolon Java lingvo. Por reta programlingvo disponeblas la paĝo JavaScript. Koncerne aliajn signifojn aliru la apartigilon Java (apartigilo).
Java
Logobildo de Java
Logobildo de Java
programlingvo sur Java Virtuala Maŝino • programaro • multparadigma programlingvo
Paradigmo: Objektema, struktura, imperativa
Paradigmo(j): strukturita programado • objektema programado • funkcia programado • ordonema programado • klas-baza programado • reflektado • komuna programado • kunruleca objektema programado • komponanto-baza programado
Aperis en: 1995
Aŭtoro(j): Sun Microsystems
Tipa sistemo: Statika, forta, protektita, nominativa, manifest-bazita
Programlingva(j) dialekto(j): Generic Java, Pizza
Kreita sub la influo de: Objective-C,[1] Ada 83, Objektema Paskalo,[2] UCSD-Paskalo[3][4] C++, C#,[5][6] Eiffel,[7] Smalltalk, Mesa,[8] Modula-3,[9] Generic Java
Havas influon sur: Ada 2005, C#, Clojure, D, ECMAScript, Groovy, J#, PHP, Scala, JavaScript, Python, BeanShell
Permesilo(j): Ĝenerala Publika Permesilo de GNU / Java Community Process
Retejo: http://java.sun.com
vdr

Java (esperantigite Ĝavo kaj Javo

[10], dumprojekta nomo Green Project) estas programlingvo kreita de Sun Microsystems 23-an de majo 1995 sendependa de la operaciumo, tio signifas ke ĝi funkcias sur virtuala maŝino, kaj ĉi tiu estas dependa de la operaciumo. Do, se oni uzas nur funkciojn de java, oni povos unufoje skribi, ĉie ajn funkciigi ĝin.

Java komenciĝis kun la celo fari TTT-paĝojn pli interaktivaj: anstataŭ la kutima parado de tekstoj, bildoj, sonoj kaj filmo (k.e. fiksita informo), Java ebligas al vi aldoni apletojn (angle: applets) aŭ komputilan inteligentecon al TTT-paĝo (per la HTML-marko <APPLET>). Ĉi-tage oni povas programi riĉan uzinterfacon en Java-apleto rulanta sur la propra komputilo, kaj tamen respekti la privatan sekurecon.

Kiel C++, Java estas objektema ido de C. Sed malsimile al C++, ĝi estas tradukata en duonkodon (angle: bytecode), kiu poste estas interpretata de Virtuala Maŝino, ekzemple en TTT-legilo kiu regas Java-n. La duonkodo estas sendependa de iu maŝino aŭ operaciumo: anstataŭe, la virtuala maŝino devas interpreti la kodon por sia sistemo. Tia maŝino estas konata kiel la Java Virtuala Maŝino.

Java-programoj ruliĝas ne nur en TTT-legiloj (kiel apletoj), sed ankaŭ kiel sendependaj programoj (kiel apliko). Cetere oni uzas Java-n en serviloj (ekzemple per JSP kaj servletoj) kaj ankaŭ por faboj. (Vidu "Specoj de Programoj" ĉisube). La apletoj estas nur la plej rimarkebla uzo de Java per simplaj uzantoj.

En 2000, Microsoft enkondukis novan lingvon, C#, por rivali Java-n. Ĝi estas ido de C++, kiu penas kuraci la difektaĵojn de Java.

Plejparte, se vi jam regas C++, por lerni Java-n vi devas lerni la klasaron de Java, kiu estas pli plena ol tiu de C++. Por verki en Java idiotisme kaj trafe, vi devas lerni el la ekzemploj de efektivaj programoj, kiel kun iu ajn lingvo maŝina aŭ homa. Multe da fontkodo ekzistas enrete.

La ĉefaj diferencoj al C++

[redakti | redakti fonton]
Libroj pri Java programado laŭ subklaso QA de la Klasifiko de la Kongresa Biblioteko.
  • Por malebligi virusojn, Java malebligas la skribadon al dosiero (nur por apletoj) kaj uzon de absoluta adreso de memoro. Tiu malsamo, kvankam kapdolorigema, estas tute necesa por ia ajn surreta programado.
  • Java havas ampleksan klasaron kiel bazon de la lingvo.
  • Kiel Lispo kaj Smalltalk, Java enhavas senrubigilon, do vi ne devas liberigi la memoron de viaj objektoj.
  • Java ne subtenas multoblan heredadon -- klaso heredas sole de unu patra klaso, tamen povas realigi plurajn interfacojn.

La ĉefaj problemoj de la uzo de Java por apletoj

[redakti | redakti fonton]

Ĉar lernolibroj traktas pri Java ideala, ne reala, ili kutime diskutas pri la supraj diferencoj (kiuj sekvas de la difino de la lingvo), sed ne pri la nur praktikaj problemoj:

  • En teorio, Java estas la sama sur ĉiu operaciumo, sed en nuna praktiko, la malsamo de la grafika interfaco estas sufiĉe grava. Via apleto povas belaspekti sur Vindozo sed esti maluzebla sur UniksoMakintoŝo! La nova klasaro Swing parte solvis la problemon.
  • Malsamo de TTT-legiloj: Java estas ankoraŭ nematura, tial la nunaj interpretiloj estas ankoraŭ malnetaj kaj interpretas Java-n ne tute same. Pro tio, projekto de unu semajno povas daŭri unu monaton por funkciigi vian programon sub ĉiu legilo kaj eĉ versio de legilo. Microsoft, malamikema al Java kiel ebla rivalanta platformo, misinterpretas aŭ aliinterpretas Java-n.

Post tempo, la graveco de tiuj problemoj malaperos ĉar interpretiloj pliboniĝos.

Se vi sole regas je LISP, C, Pascal, ktp, vi devos lerni pri objektema programado: aĉetu lernolibron (de Java, de C++ aŭ de objektema programado mem) kun bona enkonduko pri ĝi.

Specoj de programoj

[redakti | redakti fonton]

En Java estas kvar ĉefaj specoj de programoj:

  • apleto: (angle, applet) kutime apartenas al TTT-paĝo kaj estas rulita de la TTT-legilo.
  • servleto: (angle, servlet) kutime apartenas al TTT-ejo kaj estas rulita de la servilo (la komputilo kiu servas la paĝojn de TTT-ejo). Servletoj ne havas grafikan interfacon. Servletoj estas la respondo de Java al CGI. CGI kutime estas realigata per la lingvo Perl, kies kodon estas malfacile legi kaj ripari. Servletoj kreas TTT-paĝojn kaj kuketojn (angle, cookies). JSP estas realigita per servletoj.
  • apliko: (angle, application) sendepende de TTT-paĝo aŭ eĉ de la Interreto. Rulita de iu ajn komputilo (kiu enhavas Virtualan Maŝinon).
  • fabo: (angle, bean) programero, kiu provizas specifan funkcion, kiun vi povas aldoni al via programo (apleto, servilo, apliko aŭ eĉ alia fabo) per bildprogramado (angle, visual programming). Per bildprogramilo, vi povas vidi la propraĵojn, eventojn, metodojn de la fabo kaj ĝian interrilaton kun aliaj faboj, kaj ŝanĝi ĉi tiujn de la fabo. (Sed vi ankaŭ simple povas skribi la fonttekston mane).
    Unu speco de fabo, kiu estas rulita de servilo kaj ne estas videbla, estas la EJB: angla mallongigo por Enterprise JavaBean, ĝava fabo por entrepreno (t.e., retkomerco).

Ekzemploj

[redakti | redakti fonton]

Jen tradicia Saluton, mondo! programo en Java:[11]

class SalutonMondo {
   public static void main(String[] args) {
      System.out.println("Saluton, mondo!"); // Montru la tekston.
   }
}

La ĉefaj diferencoj inter versioj (Java programadaj kestoj por Java SE - Norma Eldono):

  • JDK 1.0 (majo 1995; 212 klasoj): la baza lingvo
  • JDK 1.1 (decembro 1996; 504 klasoj):
    • nova modelo por eventoj
    • internaj klasoj: klasoj difinitaj interne de alia klaso
    • faboj: stilo de kodado, kiu ebligas programadon per videblaj unuoj de kodo
    • RMI: ebligas vokadon de kodon sur aliaj maŝinoj tra la reto
    • JDBC: ebligas demandi al datumbazo per SQL.
    • subskriboj enĉifritaj
  • JDK 1.2 (decembro 1998; 1520 klasoj) -- alinomata Java 2 SEJ2SE
    • Swing: nova, pli racia klasaro por la grafika interfaco, sendependa de la altnivelaj grafikaj elementoj de operaciumoj
    • grafika trenado kaj faligado
    • Collections (kolektoj): nova, pli racia klasaro por aroj -- listoj, mapoj, aroj, ktp
  • JDK 1.3 (majo 2000; 1842 klasoj)
  • JDK 1.4 (decembro 2001; 2991 klasoj)
  • JDK 1.5 (septembro 2004; 3562 klasoj) -- alinomata J2SE 5.0
    • Generaj tipoj: oni povas traduktempe (ne rultempe) aldoni tip- aŭ klasparametrojn, per kiuj precipe la kolektklasoj iĝas tipsekuraj.
    • Novaj konstruoj ebligas mallongigi la for-ordonon por iteracieblaj objektoj.
    • enum ebligas efike deklari valordomajnojn kaj per nomo, kaj per numera valoro.
    • Konkureco (Konkurenco pri komputadaj resursoj), paralelismo kaj sinkronigo iĝas pli kaj pli praktikaj kaj oni retrovas efektivajn uzojn.
  • JDK 1.6 (decembro 2006) -- alinomata Java SE 6
    • Prinotaj klasoj nun povas aperi antaŭ klas-, kamp- aŭ metoddeklaroj. Oni mem deklaras la vivon de la prinotoj: dum traduktempo aŭ eĉ dum rultempo. Plena subteno de kompilado ene de java mem. Subteno por skriptlingvoj (jam kun Javaskripto). Java definitive malfermas siajn fontojn al la komunumo.

La revizioj 1.3 kaj 1.4 de Java estas veraj revizioj, revizioj de Java 2, kaj ne grandaj ŝanĝoj al la lingvo.

Por ruli Java-programojn oni nur bezonas la JRE (Java Rultempa Medio) de la Java SE - kiu ankaŭ estas subdosierujo de la JDK. Por ruli retservilajn programojn ekzistas ekstra tavolo, la Java EE (Java Entreprena Eldono). Por ruli sur limigitaj aparatoj kiel poŝtelefono, la Java ME (Java Mikro-Eldono) ekzistas. Krom la klasaro de Java mem ekzistas multaj aliaj klasaroj, kiujn oni povas uzi. Ekzemple por uzi objektan datumbazon pli facile, uzu S.O.D.A..

Vidu ankaŭ

[redakti | redakti fonton]

Referencoj

[redakti | redakti fonton]
  1. http://cs.gmu.edu/~sean/stuff/java-objc.html
  2. White Paper.About Microsoft's "Delegates"
  3. TechMetrix Research (1999) History of Java. Java Application Servers Report. Arkivita el la originalo je 2010-12-29. Alirita 2009-12-04 . “The project went ahead under the name "green" and the language was based on an old model of UCSD Pascal, which makes it possible to generate interpretive code”.
  4. http://queue.acm.org/detail.cfm?id=1017013
  5. http://www.barrycornelius.com/papers/java5/
  6. http://www.levenez.com/lang/]
  7. The Java Language Environment (May 1996).
  8. The Java Language Specification, 2nd Edition.
  9. http://www.computerworld.com.au/index.php/id;1422447371;pp;3;fp;4194304;fpid;1
  10. Monato, internacia magazino sendependa, numero 1998/05, paĝo 13: Kio estas Javo? verkita de Klivo.
  11. Lesson: A Closer Look at the "Hello World!" Application, Java Tutorials

Literaturo

[redakti | redakti fonton]
  • Monato, internacia magazino sendependa, numero 1998/05, paĝo 13: Kio estas Javo? verkita de Klivo.

Eksteraj ligiloj

[redakti | redakti fonton]