Java (gjuhë programimi)
Java (sqt. Xhàva) është gjuhë programuese e cila fillimisht u zhvillua nga James Gosling dhe inxhinierë të tjerë të kompanisë Sun Microsystems. Java, si komponentë thelbësore e Java platformës, u lëshua në publik më vitin 1995[1]. Java edhe pse shumicën e sintaksës së saj e ka të derivuar nga gjuhët programuese C dhe C++, ajo në krahasim me këto dy gjuhë përmban një model të objektit më të thjeshtë si dhe ka përkrahje më të vogël për punë të drejtë-për-drejtë me resurset sistemore (si p.sh. memorien). Programet e shkruara në Java, zakonisht përpilohen në bajtkod që ekzekutohet në makinën virtuale të Java-së (ang. Java Virtual Machine) e cila është e pavarur nga arkitektura kompjuterike. Gosling këtë gjuhë programuese fillimisht e kishte quajtur Oak (sq. dushk), sipas një druri dushku që shihej nga dritarja e zyrës së tij. Mirëpo, emri u shndërrua më mbas në Java për faj të drejtës së autorit, sepse ekzistonte një gjuhë tjetër programuese e quajtur Oak që nga 1991-shi[2]. Historia![]() Java filloi me një projekt të quajtur "Oak" nga James Gosling. Qëllimet e Gosling-ut ishin të vinte në jetë në makinë virtuale dhe një gjuhë që të ishte familjare me stilin e C dhe C++. Implementimi i parë ishte në 1995. Ai premtoi "Një shkrim, Zbato kudo" (WORA - Write Once, Run Anywhere), duke furnizuar runtime pa shpeza për platoformat popullore. Në fakt është i sigurt dhe siguria e tij mund të përshtatet, duke lejuar që hyrja e rrjetës dhe e file-eve të kufizohet. Me daljen e "java 2", versionet u mundën me konfiguracione të shumëfishta të ndërtuara për platforma të ndryshme. Për shëmbull, J2EE ishte për programe për ndërrmarje dhe J2ME për programe për platforma të lëvizshme, si telefonat celular, etj. Në 2006, versionet e reja të "J2" u riemërtuan Java EE, dhe Java SE. LëshimetKëto janë versionet e projektit Java që nga 1997:
FilozofiaQëllimet primareGjatë procesit të krijimit, gjuha programuese Java duhej t'i përfshinte pesë qëllimet vijuese[4]:
Platforma JavaNjëra nga karakteristikat e Java-së është portativiteti, ku kjo d.t.th që programet kompjuterike që janë të shkruara në Java duhet të funksionojnë në mënyrë të ngjashme në cilëndo nga pajisjet ose/edhe sistemet operative që janë të përkrahura. Programeri duhet të ketë mundësinë që ta shkruaj programin një herë, ta përpilon një herë, dhe ta ekzekutoj çdokund, ku kjo është në përputhshmëri me parullën "Write once, run anywhere" (sq. "Shkruaj një herë, ekzekuto kudo") të Sun për Java. Ky qëllim është arritur duke e përpiluar Java kodin në Java bajtkod në vend të kodit të makinës. Bajtkodi përmban instruksione që janë të ngjashme me ato të kodit të makinës, mirëpo këto instruksione janë të parapara që të interpretohen vetëm nga makina virtuale e Java-së. ShembujShembulli: Pershendetje, Botë!Programi i njohur Pershendetje, Botë! mund të shkruhet në Java në këtë mënyrë: /**
* Programi shfaq në terminal mesazhin "Pershendetje, Botë!" dhe më pas përfundon
*/
public class PershendetjeBote {
public static void main( String[] args ) {
System.out.println( "Pershendetje, Botë!" );
}
}
Sipas konventës[5], skedat burimore duhet të kenë po të njëjtin emër si atë të klasës që e përmbajnë, si dhe prapashtesën .java, p.sh. Kodi burimor në Java mundet të përmbajë vetëm një klasë publike (nënkuptuar klasë me qasje të tipit public), mirëpo nuk ka ndonjë kufizim për përmbajtje të klasave që kanë qasje të nivelit më të ultë se sa ai publik (p.sh. private). Pra, një klasë (class) e cila është e deklaruar si private (private) mund të vendoset në çfarëdo .java skedë. Në Java termi Termi /**
* MetodaStatikeTest.java
*/
public class MetodaStatikeTest {
public static void main( String[] args ) {
/**
* Qasja në metodën statike bëhet drejtë për së drejti
* pa pasur të nevojë që të ketë instancë të klasës
* Llogaritesi.
*/
int rezultati = Llogaritesi.mbledh( 1, 2 );
System.out.println( "1 + 2 = " + rezultati );
}
}
class Llogaritesi {
public static int mbledh( int numri_pare, int numri_dyte ) {
return numri_pare + numri_dyte;
}
}
Poashtu, metodat statike nuk mund t'i qasen asnjërës prej variablave të metodës që nuk janë të definuara si statike. Termi Metoda "main" duhet të pranoj një matricë vargjesh, që janë objekte të tipit Procesi i shtypjes (printimit) është i përfshirë në librarinë standarde të Java, ku klasa Shembulli i Avancuar: Tek ose Çift/**
* TekCift.java
*/
import javax.swing.JOptionPane;
public class TekCift {
/**
* "hyrja" është një numër i plotë që ofrohet nga shfrytëzuesi
*/
private int hyrja;
/**
* Kjo është metoda konstruktuese, e cila thirret kur ka nevojë të krijohet
* objekti i tipit TekCift.
*/
public TekCift() {}
/**
* Kjo është metoda kryesore e cila thirret nga Java interpreteri
*/
public static void main( String[] args ) {
/**
* Rreshti vijues e krijon një instancë (objekt) të klasës TekCift me emër "numri" dhe
* e inicializon atë. Më pas, bëhet thirrja e metodës "merrNumrin()" e cila e shfaq
* dritaren që merr nga shfrytëzuesi numrin.
*/
TekCift numri = new TekCift();
numri.merrNumrin();
}
public void merrNumrin() {
/**
* Blloku i kodit "try" shfrytëzohet për t'u siguruar që çdo është duke shkuar mirë.
* Në rast të shfaqjes të ndonjë problemi, Java interpreteri menjëherë kalon në bllokun
* e kodit "catch".
*/
try {
/**
* Rreshti vijues shfaq një dritare (JOptionPane) e cila merr nga shfrytëzuesi një
* numër. Vlera numerike e dhënë nga shfrytëzuesi kthehet si objekt i tipit String
* nga metoda "showInputDialog()". Kjo vlerë automatikisht konvertohet në vlerë
* numerike të tipit Integer me anë të kodit "new Integer( ... )" dhe më pas vendoset
* në variablën "hyrja". Përfundimisht thirret metoda "llogarit()" e cila shfaq në
* terminal mesazhin "Çift" ose "Tek" varësisht nga numri i dhënë.
*/
hyrja = new Integer( JOptionPane.showInputDialog( "Ju lutem shtypni nje numer" ) );
llogarit();
}
catch( NumberFormatException e ) {
/**
* Nëse programi ka arritur në bllokun e kodit "catch", atëherë kjo do të thotë që
* shfrytëzuesi nuk ka dhënë vlerë numerike.
*/
System.err.println( "Ju nuk keni dhënë një numër. Ju lutemi shtypni një numër" );
}
}
/**
* Metoda "llogarit()" do ta shfaq mesazhin bën shfaqjen e mesazhit "Çift" ose "Tek"
* varësisht nga rezultati i llogaritjes.
*/
private void llogarit() {
if( hyrja % 2 == 0 ) {
System.out.println( "Çift" );
}
else {
System.out.println( "Tek" );
}
}
}
Rastet SpecialeApletetJava apletet (ang. applets) janë programe të integruara brenda aplikacioneve tjera, si p.sh. ueb-faqeve që shfaqen me anë të ueb shfletuesve. Kodi që shfrytëzohet për krijimin e një Java apleti mund të shihet në vijim: /**
* TungBote.java
*/
import javax.swing.JApplet;
import java.awt.Graphics;
public class TungBote extends JApplet {
public void paint( Graphics g ) {
g.drawString( "Tung, Botë!", 65, 95 );
}
}
Deklarimet Klasa Në kodin e sipërm, klasa <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!-- TungBote.html -->
<html>
<head>
<title>Apleta Tung, Botë!</title>
</head>
<body>
<applet code="TungBote" width="200" height="200">
</applet>
</body>
</html>
Apleti integrohet në HTML duke e shfrytëzuar HTML elementin
ServletetServletet paraqesin komponentë të Java EE që qëndrojnë në server dhe gjenerojnë përgjigje (zakonisht HTML faqe) në bazë të kërkesave të pranuara nga klientët (zakonisht HTTP kërkesa). Për t'u kuptuar më lehtë, servleta mund të paramendohet si një aplet (pa pjesën grafike) e cila qëndron në server. Në vijim gjendet shembulli i njohur Tung, Botë! i realizuar me anë të një servlete: /**
* TungBote.java
*/
import java.io.*;
import javax.servlet.*;
public class TungBote extends GenericServlet {
public void service( ServletRequest request, ServletResponse response )
throws ServletException, IOException {
response.setContentType( "text/html" );
final PrintWriter pw = response.getWriter();
pw.println( "Tung, Botë!" );
pw.close();
}
}
Deklarimi Klasa Klasa Metoda JavaServer FaqetJavaServer Faqet (ang. JavaServer Page apo shkurtimisht JSP) paraqesin komponentë të Java EE që qëndrojnë në server. Ngjashëm me servletet, JavaServer faqet bëjnë gjenerimin e HTML faqeve varësisht nga HTTP kërkesa e klientëve. Një ndër përparësitë e JavaServer faqeve është mundësia për integrimin e tyre brenda HTML faqeve, duke shfrytëzuar operatorët <%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Shembulli "Tung, Botë!" me JavaServer Faqe</title>
</head>
<body>
<h1><% out.println( "Tung, Botë!" ); %></h1>
</body>
</html>
Sving AplikacionetSving (ang. Swing) paraqet librarinë Shembulli "Tung, Botë!" në një Sving aplikacion realizohet në këtë mënyrë: /**
* TungBote.java
*/
import javax.swing.*;
public class TungBote {
public static void main( String[] args ) {
JFrame frame = new JFrame();
JLabel label = new JLabel( "Tung, Botë!" );
frame.getContentPane().add( label );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}
}
Pra, katër hapat për krijimin e një GUI aplikacioni[8] me anë të Sving librarisë janë:
Ndërsa, rreshti Edicionet
Sun ka definuar dhe përkrah katër edicione të gjuhës programuese Java. Secili nga këto edicione shënjestron ambiente të ndryshme për aplikacione. Përsipër kësaj, Sun ka segmentuar shumicën e API-ve të tyre, në mënyrë që ato t'i përkasin vetëm një platforme. Këto platforma janë:
Referime
Lidhjet e jashtme |
Portal di Ensiklopedia Dunia