Se afișează postările cu eticheta caracteristici. Afișați toate postările
Se afișează postările cu eticheta caracteristici. Afișați toate postările

joi, 21 august 2025

Limbajul de programare Java


Un limbaj de programare de nivel înalt complet orientat spre obiecte este limbajul Java, un limbaj actual cu o popularitate imensă. Inițial a fost numit OAK dezvoltat de compania JavaSoft, de către James Gosling, în cadrul firmei SunMicrosystems, în 1995. În 2010, Oracle a achiziționat Sun Microsystems și a preluat toate produsele și tehnologiile acestora, inclusiv Java.

Limbajul Java este versatil și poate fi folosit pentru dezvoltarea unei game variate de aplicații, inclusiv:

  • Aplicații desktop: Java poate fi utilizat pentru crearea de aplicații desktop cu interfețe grafice. AWT (Abstract Window Toolkit) și Swing sunt două biblioteci Java populare pentru dezvoltarea interfețelor grafice.
  • Aplicații web: Java este folosit în dezvoltarea de aplicații web, fie prin intermediul servletelelor (clase Java care extind capacitățile serverului web pentru a gestiona cereri și răspunsuri HTTP) sau prin folosirea framework-urilor precum Spring, Java Server Faces (JSF) sau Play Framework.
  • Aplicații mobile: Dezvoltarea de aplicații mobile Android se face adesea în Java, utilizând Android SDK și Android Studio.
  • Servicii web: Java este folosit pentru crearea de servicii web, atât pentru dezvoltarea API-urilor (Application Programming Interface), cât și pentru implementarea serverelor care gestionează cererile și oferă răspunsuri.
  • Baze de date: Există numeroase biblioteci și framework-uri Java care facilitează interacțiunea cu bazele de date, cum ar fi JDBC (Java Database Connectivity), Spring Data, Hibernate, permițând dezvoltatorilor să creeze aplicații care interacționează eficient cu diferite sisteme de gestiune a bazelor de date.
  • Aplicații pentru Internetul lucrurilor (IoT): Java este utilizat în dezvoltarea aplicațiilor pentru IoT datorită capacității sale de a gestiona diverse dispozitive și comunicații.

Sunt furnizate 4 platforme Java de către Oracle:

  • Java SE (Standard Edition). Platforma de bază a limbajului ce oferă un set de biblioteci și instrumente (JDK, JRE) pentru dezvoltarea aplicațiilor desktop și generale.
  • Java EE (Enterprise Edition). Extensie a Java SE pentru aplicații web și enterprise complexe; acum evoluează sub denumirea Jakarta EE, sub egida Eclipse Foundation.
  • Java ME (Micro Edition). Destinată aplicațiilor pe telefoane mobile (feature phones) și dispozitive IoT cu resurse limitate; astăzi are o utilizare redusă.
  • JavaFX. Platformă pentru construirea de aplicații GUI (Graphical User Interface) și aplicații web bogate, RIA (Rich Internet Applications). A fost integrată în Java SE până la JDK 8, iar din JDK 11 este dezvoltată separat ca OpenJFX. 
  • GraalVM.  Este un runtime poliglot dezvoltat de Oracle care poate rula cod Java, JavaScript, Python și altele, cu performanță îmbunătățită și posibilitatea de a genera aplicații native. Practic, cu un runtime poliglot poți să ai componente scrise în limbaje diferite într-o singură aplicație și să le faci să comunice între ele eficient, fără a fi nevoie de un alt runtime separat pentru fiecare limbaj.
  • J2ME Embedded – o variantă a Java ME pentru sisteme încorporate (embedded devices). Sisteme încorporate sunt dispozitive care au un calculator integrat pentru a controla funcții specifice, dar nu sunt calculatoare generale. De exemplu electrocasnice inteigente, calculatoare inteligente, etc
  • Java Card – platformă pentru carduri inteligente și dispozitive securizate, cum ar fi SIM-uri sau carduri bancare.

  • JavaFX Mobile – o versiune a JavaFX pentru aplicații mobile (mai mult experimental și învechit).

Limbajul Java este definit de următoarele caracteristici principale:

  • Portabilitate. Datorită mașinii virtuale Java (JVM), Java este un limbaj independent de platforma de lucru, ceea ce înseamnă că aceeași aplicație rulează fără nici o modificare pe sisteme diferite cum ar fi Windows, Linux, ș.a, fapt ce aduce economii substanțiale companiilor. Sloganul de bază fiind ,,Write once, run anywhere”.
  • Orientat pe obiecte. Java este un limbaj de programare orientat pe obiecte, în care totul este tratat ca un obiect, facilitând astfel structurarea și organizarea codului.
  • Sintaxă simplă și familiară. Sintaxa Java este similară cu cea a altor limbaje precum C++ sau C#, ceea ce face mai ușoară învățarea pentru cei care au experiență cu alte limbaje. Caracteristicile ca moștenirea multiplă, șabloanele, întâlnite în alte limbaje de programare au fost eliminate.
  • Securitate: Java are un sistem puternic de securitate integrat care protejează împotriva executării de cod rău intenționat.
  • Gestionarea automată a memoriei. Java are un sistem de gestionare automată a memoriei prin colectarea de gunoi (Garbage Collector), eliminând necesitatea dezvoltatorului de a gestiona manual memoria.
  • Bibliotecă extinsă. Include o bibliotecă standard (Java Standard Library) bogată, care oferă funcționalități pentru diverse sarcini, cum ar fi lucrul cu fișiere, rețele, criptografie, interfețe grafice etc.
  • Multi-threading. Suportă programarea multi-threading, permițând executarea simultană a mai multor fire de execuție în cadrul unei aplicații.
Aceste caracteristici sunt doar câteva dintre motivele pentru care Java este adesea alegerea preferată în dezvoltarea de software, în special pentru aplicații mari și complexe. Flexibilitatea, portabilitatea și securitatea sa sunt aspecte cheie care îl fac să fie utilizat într-o gamă largă de domenii și aplicații.

Limbajul Java este definit de următoarele caracteristici principale:

Pentru a dezvolta programe Java este nevoie de următoarele resurse:

  • JDK (Java Development Kit)[1] ce include setul de aplicații necesare dezvoltării programelor Java.
  • Editor de cod performant ca de exemplu NetBeans[2], Eclipse[3], Intellij IDEA[4], ș.a.

joi, 11 ianuarie 2024

Clase și obiecte. Concepte generale

După cum am menționat în postările anterioare programarea orientată pe obiecte (POO) este o modalitate de a scrie programe în care totul este organizat în jurul unor obiecte. Fiecare obiect descrie caracteristici (cum este) și operații (ce poate face), iar aceste obiecte pot comunica și colabora între ele pentru a rezolva o problemă concretă.

Aceste caracteristici și proprietăți sunt definite într-o clasă, adică clasa este un șablon sau un prototip după care se creează obiectele. Ea definește ce proprietăți (atribute, caracteristici, variabile, date, câmpuri) și ce acțiuni (metode, funcționalitate) vor avea obiectele realizate în baza ei.

De exemplu:

Să presupunem că dorim să dezvoltăm un soft pentru gestionarea închirierii de mașini. În cadrul acestui sistem, mașinile BMW de diferite culori – roșu, verde și galben – reprezintă doar câteva dintre vehiculele concrete, reale, disponibile pentru închiriere. De asemenea, persoane precum Ecaterina, Ion și Mihai sunt exemple de clienți care pot închiria aceste mașini.

În soft, atât mașinile, cât și clienții sunt reprezentate ca obiecte. Structura generală a unei mașini este definită într-o clasă, de exemplu Mașină, iar structura unui client este definită într-o clasă separată, de exemplu Client. Fiecare mașină concretă (BMW roșu, verde sau galben) este un obiect creat pe baza clasei Mașină, iar fiecare persoană este un obiect creat pe baza clasei Client.

Important! Atunci când creăm de fapt un obiect în baza unei clase, corect spunem, instanțiem clasa. 

Obiectele de tip Client interacționează cu obiectele de tip Mașină, deoarece un client poate închiria o mașină. Această interacțiune dintre obiecte ilustrează principiul de bază al programării orientate pe obiecte, unde sistemul este construit din obiecte care colaborează între ele.

Într-o programare mai avansată, atunci când dorim să creăm interfețe grafice, cum este de exemplu fereastra ilustrată.

....surpriză....și aici vom avea la fel de a face cu obiecte și clase. De exemplu ori de câte ori apare necesitatea creării unui obiect de tip buton, cum este cel din fereastră Adauga in lista sau Calculeaza bursa va fi necesar să instanțiem clasa JButton care este prototipul unui buton. După creare, fiecărui obiect de tip JButton i se atribuie caracteristici concrete, cum ar fi textul afișat, dimensiunea, culoarea și acțiunea executată la apăsare.

În mod similar, pentru câmpurile de introducere a datelor (Nume, Prenume, Media), este necesară instanțierea clasei JTextField. Aceste obiecte permit introducerea și preluarea datelor de la utilizator.

Aceste obiecte cooperează între ele, butonul are nevoie de datele introduse în câmpurile de editare pentru a putea calcula bursa sau pentru a adăuga informațiile într-o listă.  

Datele din cutiile de editare ca să poată fi adăugate în listă este nevoie de un obiect, de exemplu de tip Elev.

Clase ca JButton sau JTextField sunt clase predefinite din pachetul Swing al limbajului Java, iar clasa Elev este una definită de programator.

Este necesar să menționăm că în limbajul Java, toate clasele fac parte dintr-o ierarhie de clase, iar părintele tuturor claselor Java este clasa Object.

Mai jos este un exemplu de ierarhie de clase predefinite în limbajul Java:

Excepţiile reprezintă mecanismul java folosit pentru tratarea erorilor ce  apar în timpul execuţiei programelor

Nu ne oprim momentan la ele, dar vom reveni la termenul de ierarhie când vom studia principiul moștenirii. 😉

În cele ce urmează vom studia cum să definim propriile clase în limbajul Java și cum să le instanțiem.

Mai țineți minte care este sinonimul cuvântului a instanția? A crea o instanță (obiect) pentru o clasă.

Succes!
❤️