JAVA: “uses or overrides a deprecated API” ERROR
Lucrând cu JAVA am obţinut de multe ori această eroare. Aceasta înseamnă că folosiţi o variabilă, metodă sau clasă învechită, care are inlocuire şi care nu mai e suportată.
Ce trebuie să faceţi? Să găsiţi metoda cu pricina şi să o înlocuiţi cu echivalenta înnoită.
Puteţi găsi metoda prin compolare cu adăugarea atributului "-Xlint" sau, dacă folosiţi NetBeans, metoda dată se arată tăiată.
Metoda nouă o puteţi găsi în JAVADocs.
Definirea şi folosirea parametrilor in Java Applet
Definirea parametrilor se face în cadrul tagului <APPLET></APPLET.
<html>
<head>
</head>
<body>
<applet code=”Test.class” width=”900″ height=”500″>
<param name=”textAfisat” value=”Hello World!!!”>
</applet>
</body>
</html>
Extragem parametrii in funcţia init():
public void init(){
text = getParameter(”textAfisat”);
if(text==null) text = “Parametrul nu este transmis.”;
}
Trebuie să atragem atenţia, că la transmiterea parametrilor cu valori numerice, avem nevoie sa le convertim. La convertire din String într-o valoare numerică pot sa apară excepţii, de exemplu NumberFormatException, care trebuie “prinse”.
JAVA Multimedia Programming Links
Comunicare dintre appleturi de pe aceeasi pagina web
Pentru a putea accesa un applet din altul e necesar de a specifica atributul NAME din tag-ul APPLET. De exemplu:
<APPLET CODE="mysecapplet.class" NAME="MySecondApplet" WIDTH="100" HEIGHT="100"></APPLET>
Apoi pentru a accesa acest applet din altul puteti folosi urmatorul cod:
Applet theApplet = getAppletContext().getAppletName("MySecondApplet");
MyApplet accessedApplet = (MyApplet)theApplet;
accessedApplet.someMethod();
E simplu…
Structura lexicală a limbajului Java
Setul de caractere
Limbajului Java lucrează în mod nativ folosind setul de caractere Unicode. Acesta este un standard internaţional care înlocuieşte vechiul set de caractere ASCII şi care foloseşte pentru reprezentarea caracterelor 2 octeţi, ceea ce înseamnă că se pot reprezenta 65536 de semne, spre deosebire de ASCII, unde era posibilă reprezentarea a doar 256 de caractere. Primele 256 caractere Unicode corespund celor ASCII, referirea la celelalte făcându-se prin \uxxxx, unde xxxx reprezintă codul caracterului.
O altă caracteristică a setului de caractere Unicode este faptul că întreg intervalul de reprezentare a simbolurilor este divizat în subintervale numite blocuri, câteva exemple de blocuri fiind: Basic Latin, Greek, Arabic, Gothic, Currency, Mathematical, Arrows, Musical, etc.
Mai jos sunt oferite câteva exemple de caractere Unicode.
• \u0030 - \u0039 : cifre ISO-Latin 0-9
• \u0660 - \u0669 : cifre arabic-indic 0-9
• \u03B1 - \u03C9 : simboluri greceşti a — ui
• \u2200 - \u22FF : simboluri matematice (V, 3,0, etc.)
• \u4e00 - \u9ff f : litere din alfabetul Han (Chinez, Japonez, Coreean)
Mai multe informaţii legate de reprezentarea Unicode pot fi obţinute la adresa ”http://www.unicode.org”.
Cuvinte cheie
Cuvintele rezervate în Java sunt, cu câteva excepţii, cele din C++ şi au fost enumerate în tabelul de mai jos. Acestea nu pot fi folosite ca nume de clase, interfeţe, variabile sau metode. true, false, null nu sunt cuvinte cheie, dar nu pot fi nici ele folosite ca nume în aplicaţii. Cuvintele marcate prin * sunt rezervate, dar nu sunt folosite.
|
abstract |
double |
int |
strictfp |
Incepând cu versiunea 1.5, mai există şi cuvântul cheie enum.
Identificatori
Sunt secvenţe nelimitate de litere şi cifre Unicode, începând cu o literă. După cum am mai spus, identificatorii nu au voie să fie identici cu cuvintele rezervate.
Literali
Literalii pot fi de următoarele tipuri:
Intregi
Sunt acceptate 3 baze de numeraţie : baza 10, baza 16 (încep cu caracterele 0x) şi baza 8 (încep cu cifra 0) şi pot fi de două tipuri:
– normali - se reprezintă pe 4 octeţi (32 biţi)
– lungi - se reprezintă pe 8 octeţi (64 biţi) şi se termină cu caracterul L (sau l).
Flotanţi
Pentru ca un literal să fie considerat flotant el trebuie să aibă cel puţin o zecimală după virgulă, să fie în notaţie exponenţială sau să aibă sufixul F sau f pentru valorile normale - reprezentate pe 32 biţi, respectiv D sau d pentru valorile duble - reprezentate pe 64 biţi. Exemple: 1.0, 2e2, 3f, 4D.
Logici
Sunt reprezentaţi de true - valoarea logică de adevăr, respectiv false - valoarea logică de fals.
Atenţie
Spre deosebire de C++, literalii întregi 1 şi 0 nu mai au semnificaţia de adevărat, respectiv fals.
Caracter
Un literal de tip caracter este utilizat pentru a exprima caracterele codului Unicode. Reprezentarea se face fie folosind o literă, fie o secvenţă escape scrisă între apostrofuri. Secvenţele escape permit specificarea caracterelor care nu au reprezentare grafică şi reprezentarea unor caractere speciale precum backslash, apostrof, etc. Secvenţele escape pre-definite în Java sunt:
– ’ \b’ : Backspace (BS)
– ’ \t’ : Tab orizontal (HT)
– ’ \n’ : Linie nouă (LF)
– ’\f : Pagină nouă (FF)
– ’ \r’ : Inceput de rând (CR)
– ’\"’ : Ghilimele
– ’ \’’ : Apostrof
– ’ \\’ : Backslash
Siruri de caractere
Un literal şir de caractere este format din zero sau mai multe caractere între ghilimele. Caracterele care formează şirul pot fi caractere grafice sau secvenţe escape.
Dacă şirul este prea lung el poate fi scris ca o concatenare de subşiruri de dimensiune mai mică, concatenarea şirurilor realizându-se cu operatorul + , ca în exemplul: "Ana " + " are " + " mere ". Sirul vid este "".
După cum vom vedea, orice şir este de fapt o instanţă a clasei String, definită în pachetul java.lang.
Separatori
Un separator este un caracter care indică sfârşitul unei unităţi lexicale şi ınceputul alteia. In Java separatorii sunt următorii: ( ) [];,.. Instrucţiunile unui program se separă cu punct şi virgulă.
Operatori
Operatorii Java sunt, cu mici deosebiri, cei din C++:
• atribuirea: =
• operatori matematici: +, -, *, /, %, ++, — .
Este permisă notaţia prescurtată de forma lval op= rval: x += 2 n -= 3
Există operatori pentru autoincrementare şi autodecrementare (post şi pre): x++, ++x, n–, –n
Evaluarea expresiilor logice se face prin metoda scurtcircuitului: evaluarea se opreşte în momentul în care valoarea de adevăr a expresiei este sigur determinată.
• operatori logici: &&(and), ||(or), !(not)
• operatori relaţionali: <, <=, >, <=, ==, ! =
• operatori pe biţi: &(and), | (or), ^ (xor), ~ (not)
• operatori de translaţie: <<, >>, >>> (shift la dreapta fără semn)
• operatorul if-else: expresie-logica ? val-true : val-f alse
• operatorul , (virgulă) folosit pentru evaluarea secvenţială a operaţiilor: int x=0, y=1, z=2;
• operatorul + pentru concatenarea şirurilor:
String s1="Ana";
String s2="mere";
int x=10;
System.out.println(s1 + " are " + x + " " + s2);
• operatori pentru conversii (cast) : (tip-de-data)
int a = (int)’a’;
char c = (char)96;
int i = 200;
long l = (long)i; //widening conversion
long l2 = (long)200;
int i2 = (int)l2; //narrowing conversion
Comentarii
In Java există trei feluri de comentarii:
• Comentarii pe mai multe linii, închise între /* şi */.
• Comentarii pe mai multe linii care ţin de documentaţie, închise între /** şi */. Textul dintre cele două secvenţe este automat mutat în documentaţia aplicaţiei de către generatorul automat de documentaţie javadoc.
• Comentarii pe o singură linie, care incep cu //. Observaţii:
• Nu putem scrie comentarii în interiorul altor comentarii.
• Nu putem introduce comentarii în interiorul literalilor caracter sau şir de caractere.
• Secvenţele /* şi */ pot să apară pe o linie după secvenţa // dar îşi pierd semnificaţia. La fel se întamplă cu secvenţa // în comentarii care incep cu /* sau */.
Introducere in JAVA
Java este o tehnologie inovatoare lansata de compania Sun Microsystems în 1995, care a avut un impact remarcabil asupra întregii comunităţi a dezvoltatorilor de software, impunându-se prin calităţi deosebite cum ar fi simplitate, robusteţe şi nu în ultimul rând portabilitate. Denumită iniţial OAK, tehnologia Java este formată dintr-un limbaj de programare de nivel înalt pe baza căruia sunt construite o serie de platforme destinate implementării de aplicaţii pentru toate segmentele industriei software.
Limbajul de programare Java
Inainte de a prezenta în detaliu aspectele tehnice ale limbajului Java, să amintim caracteristicile sale principale, care l-au transformat într-un interval de timp atât de scurt într-una din cele mai pupulare opţiuni pentru dezvoltarea de aplicaţii, indiferent de domeniu sau de complexitatea lor.
· Simplitate - elimină supraîncărcarea operatorilor, moştenirea multiplă şi toate "facilităţile" ce pot provoca scrierea unui cod confuz.
· Uşurinţă în crearea de aplicaţii complexe ce folosesc programarea în reţea, fire de execuţie, interfaţă grafică, baze de date, etc.
· Robusteţe - elimină sursele frecvente de erori ce apar în programare prin renunţarea la pointeri, administrarea automată a memoriei şi eliminarea pierderilor de memorie printr-o procedură de colectare a obiectelor care nu mai sunt referite, ce rulează în fundal ("garbage collector").
· Complet orientat pe obiecte - elimină complet stilul de programare procedural.
· Securitate - este un limbaj de programare foarte sigur, furnizând mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamică a codului pentru detectarea secvenţelor periculoase, impunerea unor reguli stricte pentru rularea proceselor la distanţă, etc.
· Neutralitate arhitecturală - comportamentul unei aplicaţii Java nu depinde de arhitectura fizică a maşinii pe care rulează.
· Portabililtate - Java este un limbaj independent de platforma de lucru, aceeaşi aplicaţie rulând fără nici o modificare şi fără a necesita re-compilarea ei pe sisteme de operare diferite cum ar fi Windows, Linux, Mac OS, Solaris, etc. lucru care aduce economii substanţiale firmelor dezvoltatoare de aplicaţii.
· Este compilat şi interpretat, aceasta fiind soluţia eficientă pentru obţinerea portabilităţii.
· Performanţă - deşi mai lent decât limbajele de programare care generează executabile native pentru o anumită platformă de lucru, compilatorul Java asigură o performanţă ridicată a codului de octeţi, astfel încât viteza de lucru puţin mai scăzută nu va fi un impediment în dezvoltarea de aplicaţii oricât de complexe, inclusiv grafică 3D, animaţie, etc.
· Este modelat după C şi C++, trecerea de la C, C++ la Java făcându-se foarte uşor.
Platforme de lucru Java
Limbajul de programare Java a fost folosit la dezvoltarea unor tehnologii dedicate rezolvării unor probleme din cele mai diverse domenii. Aceste tehnologii au fost grupate în aşa numitele platforme de lucru, ce reprezintă seturi de librării scrise în limbajul Java, precum şi diverse programe utilitare, folosite pentru dezvoltarea de aplicaţii sau componente destinate unei anume categorii de utilizatori.
• J2SE (Standard Edition)
Este platforma standard de lucru ce oferă suport pentru crearea de aplicaţii independente şi appleturi.
De asemenea, aici este inclusă şi tehnologia Java Web Start ce furnizează o modalitate extrem de facilă pentru lansarea şi instalarea locală a programelor scrise în Java direct de pe Web, oferind cea mai comodă soluţie pentru distribuţia şi actualizarea aplicaţiilor Java.
• J2ME (Micro Edition)
Folosind Java, programarea dispozitivelor mobile este extrem de simplă, platforma de lucru J2ME oferind suportul necesar scrierii de programe dedicate acestui scop.
• J2EE (Enterprise Edition)
Această platformă oferă API-ul necesar dezvoltării de aplicaţii complexe, formate din componente ce trebuie să ruleze în sisteme eterogene, cu informaţiile memorate în baze de date distribuite, etc.
Tot aici găsim şi suportul necesar pentru crearea de aplicaţii şi servicii
Web, bazate pe componente cum ar fi servleturi, pagini JSP, etc.
Toate distribuţiile Java sunt oferite gratuit şi pot fi descărcate de pe Internet de la adresa "http://java.sun.com".
In continuare, vom folosi termenul J2SDK pentru a ne referi la distribuţia standard J2SE 1.5 SDK (Tiger).
Java: un limbaj compilat şi interpretat
In funcţie de modul de execuţie a aplicaţiilor, limbajele de programare se împart în două categorii:
• Interpretate: instrucţiunile sunt citite linie cu linie de un program numit interpretor şi traduse în instrucţiuni maşină. Avantajul acestei soluţii este simplitatea şi faptul că fiind interpretată direct sursa programului obţinem portabilitatea. Dezavantajul evident este viteza de execuţie redusă. Probabil cel mai cunoscute limbaj interpretat este limbajul Basic.
• Compilate: codul sursă al programelor este transformat de compilator într-un cod ce poate fi executat direct de procesor, numit cod maşină. Avantajul este execuţia extrem de rapidă, dezavantajul fiind lipsa portabilităţii, codul compilat într-un format de nivel scăzut nu poate fi rulat decât pe platforma de lucru pe care a fost compilat.
Limbajul Java combină soluţiile amintite mai sus, programele Java fiind atât interpretate cât şi compilate. Aşadar vom avea la dispoziţie un compilator responsabil cu transformarea surselor programului în aşa numitul cod de octeţi, precum şi un interpretor ce va executa respectivul cod de octeţi.
Codul de octeţi este diferit de codul maşină. Codul maşină este reprezentat de o succesiune de instrucţiuni specifice unui anumit procesor şi unei anumite platforme de lucru reprezentate în format binar astfel încât să poată fi executate fără a mai necesita nici o prelucrare.
Codurile de octeţi sunt seturi de instrucţiuni care seamănă cu codul scris în limbaj de asamblare şi sunt generate de compilator independent de mediul de lucru. In timp ce codul maşină este executat direct de către procesor şi poate fi folosit numai pe platforma pe care a fost creat, codul de octeţi este interpretat de mediul Java şi de aceea poate fi rulat pe orice platformă pe care este instalată mediul de execuţie Java.
Prin maşina virtuală Java (JVM) vom înţelege mediul de execuţie al aplicaţiilor Java. Pentru ca un cod de octeţi să poată fi executat pe un anumit calculator, pe acesta trebuie să fie instalată o maşină virtuală Java. Acest lucru este realizat automat de către distribuţia J2SDK.
Input/Output in JAVA
http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/jb/ch3.html
http://www.uic.rsu.ru/doc/programming/java/TIJ2e.ru/Chapter11.html
Java Media Development