. Java este simplă.
Nici un limbaj de programare nu este simplu, dar Java este considerată ca fiind mai simplă şi mai uşoară din punct de vedere al folosirii limbajului de programare orientat pe obiecte, atunci când este comparată cu cel mai popular limbaj de programare, C++. Parţial modelată dupa C++, Java a înlocuit complexitatea moştenirii multiple din C++ cu o structură simpla numită interfaţă (interface), şi de asemenea folosirea pointer-ilor. Motivul pentru care Java este mai simplă decat C++ este faptul că Java foloseşte alocare automată de memorie şi Garbage Collector (dealocarea memoriei), pe cand în C++ acestea sunt făcute explicit de către user. De altfel, numărul de constructori de limbaj este mic pentru un limbaj aşa puternic. Sintaxa clară face Java uşor de citit şi de scris.
. Java este Orientată pe obiecte .
Programarea pe obiecte modelează lumea reală. Totul poate fi modelat ca şi un obiect. De exemplu, un cerc este un obiect, o persoană este un obiect şi un icon este un obiect. Java este orientată pe obiecte deoarece programarea în Java este centrată pe crearea de obiecte , manipularea şi comunicarea lor. Un obiect are anumite propietăţi şi comportamente. Proprietăţile sunt descrise folosind datele şi comportamentul folosind metodele. Definirea obiectelor se face folosind clasele Java. O clasă este ca şi un template pentru un obiect. Iar obiectul este o descriere completă a clasei, proces numit instanţiere.
Java constă din una sau mai multe clase aranjate ierarhic, astfel încat o clasă copil este capabilă să moştenească proprietăţile şi comportamentele clasei părinte. Există seturi de clase predefinite, numite pachete care pot fi importate în programe.
Programarea orietată pe obiecte oferă flexibilitate mai mare, modularitate şi reutilizabilitate. Pentru mulţi ani, tehnologia orientată pe obiecte a fost privită ca şi o investiţie suplimentară în infrastructură.
. Java este distribuită.
Calculul distribuit implică câteva calculatoare într-o reţea, lucrând simultan. Java este realizată pentru a face calculul distribuit mai uşor având în vedere capabilităţile reţelei integrate lui. Scriind programe de reţea în Java este asemănător trimiterii şi primirii datei de la sau la un fişier.
. Portabilitatea.
Un program portabil este un program care rulează oriunde (independent de platformă). Java rulează pe aproape orice platformă hardware şi software. Apleturile java sunt suportate de toate browser-ele compatibile Java. Odată cu trecerea de la un software existent la Java, se va face şi compatibilitatea cu aceste platforme software. Programele Java devin din ce în ce mai portabile, fiind şterse dependenţele hardware şi ale Sistemului de Operare. Codul sursă Java este mai portabil decât limbajele C. În C şi C++, fiecare implementare decide cerinţele de precizie şi de depozitare pentru tipuri de date de bază. Aceasta este o sursa majoră de eroare care apare la portarea pe un alt sistem, deoarece schimbările preciziei afectează calculele şi mărimea structurii poate fi afectată.
Java însă defineşte mărimea tipurilor de bază pentru toate implementările; un întreg pe un anumit sistem are aceeaşi mărime ca si pe oricare alt sistem. Nu permite folosirea pointer-ului aritmetic, de aceea mărimea structurii nu poate conduce la erori de portare.
Deşi atât C cât şi C++ sunt suportate pe toate platformele suportate de Java, aceste limbaje nu sunt suportate într-o manieră independentă de platformă. Trecerea între platforme diferite de Sisteme de Operare, implică recompilarea, în cel mai bun caz, precum şi o modificare a structurii.
. Translatorul Java.
Este nevoie de un Translator Java pentru a putea rula programele. Programele sunt compilate de o maşină virtuală Java (Java Virtual Machine) în bytecode. Acesta este independent de maşină şi poate rula pe orice maşină care are un Translator Java. În mod normal, un compilator va translata un program dintr-un limbaj de nivel înalt în cod maşina şi acest cod este capabil să ruleze pe maşina nativă. Dacă programul este rulat pe alte maşini, el trebuie recompilat pe aceea maşină. Cu Java acest lucru nu mai este necesar.
. Securitate.
Java este unul dintre limbajele de programare care consideră securitatea ca şi parte din model. Compilatorul, translatorul şi browser-ele compatibile Java conţin câteva nivele de măsuri de securitate pentru reducerea riscului de compromitere a securităţii, de pierdere a datei şi de distrugere a sistemului.
Considerând problemele de securitate ca fiind asociate cu execuţia unui code "in care nu ai încredere" într-o manieră sigură şi în mai multe medii de execuţie, măsurile de securitate Java rezolvă aceste probleme. C şi C++ nu au asemenea capabilităti de securitate intrisecă.
. Increderea.
Securitatea şi încrederea depind una de alta. Măsurile de securitate nu pot fi implementate fară un grad de încredere pentru execuţia programelor. Multe caracteristici ale limbajelor C şi C++ nu oferă încredere programului, de exemplu pointerii sau conversia automată de tipuri. Compilatorul Java permite câteva nivele adiţionale de verificare a indentificării tipurilor sau alte inconsistenţe.
. Multimedia: Imagini, Sunet şi Animaţie.
În acestă epocă de dezvoltare pe plan multimedia, apar tot mai multe calculatoare numite "multimedia ready", cu drivere pentru CD-rom, plăci de sunet, accelerator 3D şi alte tehnologii noi pentru sunet şi grafică. Multimedia solicită putere mare de calcul precum şi un limbaj de programare care face crearea multimedia uşoară.
Java, prin pachetele de clase care sunt parte integrantă a programării, oferă multe facilităţi multimedia. Printre formatele de imagini suportate de Java este şi Graphics Interchange Format .GIF and Joint Photography Experts Group .JPEG. iar printre formatele audio sunt AIFF, AU şi WAV. Formatele curente suportate pentru muzică sunt MIDI Type 0, MIDI Type 1 şi Rich Music Format (RMF). Formatele pentru sunet permit date audio de 8-16 biti, mono sau stereo, cu viteze de la 8KHz la 48 de kHz. Şi aşa mai departe poate continua lista.
. Maşina virtuală Java (JVM).
JVM execută codul java şi garanteaza anumite comportamente cu privire la execuţia pe alte platforme hardware sau software. JVM foloseşte politici de securitate, limitând ceea ce poate face un program Java.
. Internetul
JavaBeans -face uşoara scrierea unor componente reutilizabile care pot fi folosite împreună cu un minim de cod adiţional. Oferă un mecanism promiţător pentru construirea de componente logice reutilizabile cu modificări minime.
. Java este Robusta
Robustă înseamnă de încredere . Nici un limbaj de programare nu asigură într-adevăr încrederea. Java verifică apariţia unor erori posibile, preventive, compilatoarele java fiind capabile să detecteze erorile care în alte limbaje apar numai la execuţie. Java nu suportă pointer-ii şi deci elimină posibilitatea suprascrierii memoriei şi coruperea datelor. De asemenea tratează erorile de execuţie şi poate "prinde" anumite situaţii de excepţie astfel încât programul să-şi poată continua execuţia normală şi să se termine când apare o eroare.
. Java este multithread
Prin multithread se înţelege capacitatea unui program de a trata mai multe sarcini simultan. În Java, programarea multithread (concurentă) este integrată acesteia, pe când în alte limbaje de programare, se apelează proceduri specifice sistemului de operare pentru aceasta.
Tehnica multithread este folosită în special pentru Interfaţa Grafică Utilizator (Graphical User Interface - GUI) şi programarea în reţea.
. Java este neutra din punct de vedere architectural
Aceasta este cea mai importantă caracteristică. Neutră din punct de vedere arhitectural înseamnă că este independentă de platformă. Un program Java poate rula pe orice platformî cu JVM. Majoritatea vânzătorilor de sisteme de operare au adoptat JVM. Succesul iniţial al limbajului Java este capabilitatea programării Web.
. Java este Dinamică
Limbajul de programare Java a fost creat pentru a se adapta unui mediu în continuă schimbare. Noi metode şi proprietăţi pot fi adăugate într-o clasă fară a afecta clienţii lor. De asemenea Java este capabilă să încarce clasele dorite în timpul execuţiei.