Java struje: stvaranje i dovršetak

Java je programski jezik visoke razine koji je razvio Sun Microsystems. Izvorno stvoren za razvoj programa za tweetove i džepne uređaje, ali kasnije je postao popularan i popularan jezik za izradu web aplikacija. Oracle je kupio Sun Microsystems u siječnju 2010. godine, tako da Java sada podržava i distribuira Oracle. Java koristi objektno-orijentirani model programiranja i može se koristiti za stvaranje aplikacija koje se mogu izvoditi na istom računalu ili distribuirati između poslužitelja i klijenata na mreži. Također se može koristiti za stvaranje malog programskog modula ili apleta za korištenje kao dio web-stranice.




Prednosti

Java sintaksa je slična C ++, ali je strogo objektno-orijentirani programski jezik. Na primjer, većina Java programa sadrži klase koje se koriste za identifikaciju objekata i metoda. Metode su zauzvrat dodijeljene zasebnim klasama. Java je također poznata kao rigorozniji sustav formalnih znakova nego C ++. To znači da varijable i funkcije moraju biti jasno definirane tako da izvorni kod može otkriti pogreške ili "iznimke" lakše i brže od drugih jezika. Također ograničava druge vrste pogrešaka koje mogu biti uzrokovane neizvjesnim varijablama ili nedodijeljenim vrstama. Za razliku od izvršnih Windows datoteka (.EXE datoteke) ili Macintosh datoteka .APP datoteke, Java programi se ne pokreću izravno na operativnom sustavu. Umjesto toga, podatke interpretira Java virtualni stroj ili JVM,koja radi na više platformi. Sve Java aplikacije su multiplatformne i mogu se izvoditi na različitim platformama, uključujući Macintosh, Windows i Unix računala. JVM mora biti instaliran za aplikacije ili applete za pokretanje. Dostupno kao besplatno preuzimanje.


Elementi i načela

Uspjeh i popularnost Jave pridonijeli su značajkama jezika. Navedimo glavne:
  • Programi stvoreni na Javi imaju kvalitetu prenosivosti u mreži. Izvorni kod je kompiliran tako da je programski jezik bajt-kod koji se može pokrenuti bilo gdje na mreži na poslužitelju ili klijentu s Java virtualnim strojem (JVM). JVM interpretira bajt kod u kodu koji će raditi na računalnom hardveru. Naprotiv, većina programskih jezika, kao što su COBOL, C ++, Visual Basic ili Smalltalk, kompajliraju kod u binarnu datoteku. Binarne datoteke ovise o platformi, tako da program pisan za računalo sa sustavom Windows koji se temelji na Intelu ne može pokrenuti Mac, Linux stroj ili glavno računalo IBM. JVM uključuje opcionalni kompilator Just-in-time (JIT) koji dinamički kompajlira bajt kod u izvršni kod kao alternativu tumačenju jedne bajtkode instrukcije odjednom. U mnogim slučajevima, dinamička JIT kompilacija je brža od interpretacije virtualnog stroja.
  • Pouzdanost koda. Za razliku od programa pisanih na C ++ i nekim drugim jezicima, Java objekti ne sadrže linkove na vanjske podatke ili druge poznate objekte. To osigurava da instrukcija ne sadrži adresu za pohranu u drugoj aplikaciji ili na samom operacijskom sustavu, zbog čega programi sam operativni sustav može prekinuti ili uzrokovati kvar. JVM provodi niz provjera na svakoj stranici kako bi osigurao integritet.
  • Java je objektno orijentirani jezik. Objekt može iskoristiti činjenicu da je dio klase objekata i nasljeđuje kod koji je zajednički za klasu. Ova se metoda može smatrati jednom od značajki ili ponašanja objekta. Objektno orijentirana metoda relativno je rasprostranjena u suvremenom programskom okruženju, ali je 1996. godine samo nekoliko jezika učinkovito primijenilo objektno orijentirane koncepte i dizajnerske obrasce.
  • Fleksibilnost apleta. Java applet ima sve značajke namijenjene brzom pokretanju.
  • Java se lako uči. Sintaksa jezika slična je jeziku C ++. Ako programer ima C /C ++ jezik, neće biti teško ovladati tim jezikom.
  • Uobičajena zabluda je da postoji veza između Jave i javascripta. Ovi su jezici slični u sintaksi, ali s konstruktivne točke gledišta postoje različite strukture.
  • Platforme

    Postoje tri ključne platforme na kojima programeri razvijaju Java aplikacije:
  • Java SE - jednostavne samostalne aplikacije razvijene su pomoću Java Standard Editiona. Nekada poznat kao J2SE, Java SE pruža API-je koji su potrebni za razvoj tradicionalnih desktop aplikacija.
  • Java EE - Java Enterprise Edition, ranije poznat kao J2EE, pruža mogućnost stvaranja poslužiteljskih komponenti koje mogu odgovoriti na web-ciklus zahtjeva za odgovor. Ovaj raspored vam omogućuje stvaranje Java programa koji mogu komunicirati s internetskim klijentima, uključujući web-preglednike, na kojima se temelje klijentiCORBA pa čak i web usluge temeljene na REST-u i SOAP-u.
  • Java ME - Java također pruža jednostavnu platformu za razvoj mobilnih uređaja, poznatu kao Java Micro Edition, ranije poznatu kao J2ME. Java ME se pokazala kao vrlo popularna platforma za razvoj ugrađenih uređaja, ali se borila za uspjeh u areni razvoja pametnih telefona. Što se tiče razvoja pametnih telefona, Android je postao mobilna razvojna platforma.
  • Primjeri uporabe

    Koristeći različite komponente koje pruža Java EE, programeri mogu lako pisati programe koji koriste popularne obrasce dizajna softvera i univerzalno dogovorene napredne tehnike. Okviri Struts, Spring i JavaServer Faces koriste Java Servlet za implementaciju dizajna prednjeg krajnjeg kontrolera za centralizaciju upita.
    U međuvremenu, većina Java ekosustava je ogroman broj open source projekata, softverskih platformi i API-ja koji su stvorili zajednicu koristeći jezik. Na primjer, Apache Foundation hostira razne Java-projekte, uključujući:
  • Simple Java Logs (SLF4J).
  • Velike platforme za obradu podataka.
  • Integracijske platforme kao što su Apache Camel, Apache Axis i CXF za razvoj web-usluga RESTful.
  • Platforme za razvoj mikro-usluga.
  • Druge tvrtke pokušat će prenijeti okruženje Java EE u oblak. Budući da programeri stvaraju usluge u oblaku, mogućnost brzog proširivanja tih usluga ključno je pitanje, kao i sposobnost zajedničkog rada uoblak.

    Kritika

    Javna sintaksa je često osuđena na bučno izražavanje. Prekomjerne mreže i dobitnici, jaka tipizacija, čine Java-programe nadutim. Kao odgovor na to, "pojavilo se nekoliko perifernih jezika kako bi se riješio ovaj problem, uključujući i Groovy, koji je postao vrlo popularan. na objekte unutar, složene i paralelne operacije na osnovi popisa mogu dovesti do pronalaženja izlaznih rješenja JVM-a Scala jezik rješava mnoge slabosti Java jezika koji smanjuju njegovu sposobnost zumiranja.

    Java Streams

    Streams - programska paradigma, izumio je J. Podkery Rodker-Morrison krajem 60-ih, koji koristi termin "obrada podataka" za dizajniranje i stvaranje aplikacija. Java thread definira primjenu mreže procesa koji razmjenjuju podatke pomoću blokova podataka (paketa informacija) koji se kreću kroz definiranu vezu. Ti se procesi mogu beskonačno povezati kako bi se oblikovale aplikacije bez mijenjanja njihovog unutarnjeg sadržaja. Tako je struja usmjerena prema komponenti. Stvaranje Java toka je specifičan oblik programiranja toka podataka. Temeljeno na ograničenim baferima, informacijskim paketima s određenim vijekom trajanja, imenovanim portovima i specifičnom definicijom veza. Procesi međusobno djeluju preko veza, kojima se pristupa preko portova. Veze se obično provode putem ograničenih međuspremnika. Veličina pufera ili maksimalni brojPaketi koji mogu sadržavati redove nazivaju se veze propusnosti. Neke implementacije omogućuju uspostavljanje veze s kapacitetom od 0, što znači da se IP adrese podataka odmah prenose između procesa slanja i primanja.

    Definicija

    Streaming program vidi program kao skup procesa ("crnih okvira") koji kroz veze kojima se pristupa procesima koristi portove. Proces je instanca komponente koja djeluje istovremeno s drugim procesima, uključujući druge instance iste komponente. Opći pristup u programiranju streaminga je konceptualizirati program kao niz tokova i potprograma koji se odvijaju kroz niz povezanih procesa. Paralelnost se provodi ograničavanjem odnosa između procesa koji koriste protok informacija paketa kada je Java stream gotov.
    Vizualno programiranje u ovom kontekstu uključuje povezivanje tekstualnih komponenti ili dijagrama u dvodimenzionalnom pogledu koji koristi sposobnost prepoznavanja ljudskih slika i vizualnih stilova mišljenja. Programiranje teksta je prethodno dostupno na razini komponenti, a za jednostavne aplikacije - na razini mreže. Glavne značajke su ponovno korištenje koda, testiranje i paralelizam.

    Uvod

    Streaming programiranje definira aplikacije pomoću metafore "tvornica podataka". Aplikacija se ne smatra pojedinačnim, sekvencijalnim procesom koji počinje u određenom trenutku u vremenu, a zatim izvodi jednu operaciju po jedinici vremena do potpunog završetka, ali kao mrežuasinkroni procesi, povezani sa strujama blokova strukturiranih podataka koji se nazivaju informacijski paketi (IP). Mreža je definirana vanjskim procesima kao popis veza koje se tumače kao dio softvera, obično nazvan raspored. Procesi međusobno djeluju putem veze fiksnog kapaciteta. Veza se povezuje s procesom pomoću porta koji ima ugovoreno ime između procesnog koda i definicije mreže. Jedan isti kôd može izvesti više od jednog procesa. U bilo kojem trenutku ova IP adresa može pripadati samo jednom procesu ili biti na putu između dva procesa. Luke mogu biti jednostavne ili masivne. Budući da se Java procesi mogu nastaviti neograničeno, s ulaznim i izlaznim podacima, aplikacije koje koriste ovu metodu obično rade manje od uobičajenih aplikacija i optimalno koriste sve procesore na stroju.

    Mreža

    Definicija mreže obično se shematski pretvara u popis veza na nekom jeziku ili notaciji niže razine. Java I /O tokovi često su jezik vizualnog programiranja na ovoj razini. Složenije definicije mreža imaju hijerarhijsku strukturu koja se sastoji od podmreža s fleksibilnom povezanošću. Ostali primjeri Java niti temelje se na tradicionalnim programskim jezicima. Konkretno, RaftLib koristi C ++ i operatore slične iostreamu kako bi izvršio Java stream.

    Opis procesa

    Rad s nitima Java pokazuje obvezujuće podatke kao najvišeslaba povezanost komponenti. Koncept slobodne komunikacije, pak, povezan je s konceptom uslužno orijentiranih arhitektura. Udaljeni niz Java-ova zadovoljava niz kriterija za takvu arhitekturu.
    Metoda strujanja doprinosi funkcionalnom stilu visoke razine specifikacija, što pojednostavljuje razvoj hipotetskih preduvjeta za ponašanje sustava. Primjer Java tokova je model distribuiranog podatkovnog prometa za konstruktivno projektiranje i analizu semantike distribuiranog protokola.

    Karakteristike

    Streaming programiranje ima sljedeća jedinstvena svojstva:
  • Strukturalnost: dijagrami i komponente imaju jasnu strukturu (sučelje, stanje i ponašanje).
  • Dizajn sustava podijeljen je u dva sloja: grafički (obično vizualni) i komponentni (obično tekstualni). U pogledu softverske arhitekture, potiču se različite uloge. Kao primjer: Java teme se upravljaju funkcijama igranja uloga grafičkog dizajnera i komponentnog implementatora.
  • Načelo paralelizma: svaki proces radi u svom toku, pridruženom programu ili drugom okruženju.
  • ​​
  • Aktivacija - sa stajališta dizajnera, grafička točka procesa se izvršava istodobno, a funkcija softvera za planiranje omogućuje distribuciju procesorskog vremena i upravljanje drugim uslugama koje su potrebne za podržavanje ove funkcionalnosti.
  • Paketi informacija pri stvaranju Java toka imaju životni ciklus i pripadaju samo jednom procesu.
  • Komponente mogu imati višestruke ulaze ili izlaze.
  • Aplikacija je graf, a ne stablo. Mogu se koristiti ciklički spojevi (petlje povratne veze).
  • Veze se mogu kombinirati u grafikon, što znači da paketi različitih lukova dolaze na ulazni port. Veze bi trebale biti podijeljene kroz komponentu zbog raznolikosti strategija distribucije i pravila vlasništva nad intelektualnim vlasništvom.
  • Veze se provode kao ograničeni međuspremnici s volumenom od 0 do broja ograničenog implementacijom.
  • Primjeri

    Komponente Java podatkovnih tokova često tvore komplementarne parove. U uobičajenoj logici, programer brzo pronalazi da ni ulaz ni izlazne strukture mogu biti korišteni za kontrolu protoka hijerarhije kontrolnih poziva. U niti uvođenja Jave, opis problema nudi rješenje. "Riječi" su izričito opisane u opisu problema, tako da ih programer treba smatrati informacijskim paketima (IP). U Java ulaznim strujama ne postoji jedinstvena hijerarhija poziva, pa programer ne treba postaviti prioritet. Kada se generira Java stream, paketi informacija o izvoru (IIP) mogu se koristiti za označavanje parametarskih informacija, kao što su željena duljina izlaznog zapisa ili naziva datoteka. IIP-ovi su blokovi podataka koji su povezani s portom u definiciji mreže koji postaje "uobičajena" IP adresa kada se "primljeni" parametar izdaje odgovarajućem portu.

    Batch Update

    Ova vrsta programa uključuje prijenos datoteke podataka (promjene, dodavanja i brisanja) u glavnu datoteku i stvaranje ažurirane glavne datoteke i jednog ili više izvješća. Novi protok Jave je dovoljanTeško je šifrirati pomoću sinkronog proceduralnog koda, budući da se dva (ponekad više) ulaznih tokova moraju sinkronizirati. U arhitekturi streaminga, višekratna komponenta olakšava snimanje ove vrste aplikacije jer ovaj alat kombinira dva toka i umeće IP podatke kako bi odredio razine grupe. Pretpostavimo da se jedna ili dvije Java niti sastoje od IP adresa s ključnim vrijednostima 1 2 i 3, a IP adrese druge niti imaju ključne vrijednosti 111221 313233 i 41 gdje prva znamenka odgovara vrijednosti glavnog ključa. Koristeći zagrade za prikaz IP adresa, prikupljeni izlazni tok će izgledati ovako: (m1 d11 d12) (m2 d21) (m3 d31 d32d33) (d41).

    Procesi multipleksiranja

    Streaming programiranje podržava multipleksiranje procesa. Budući da su komponente samo za čitanje, bilo koji broj primjeraka ove komponente ("procesi") može se izvoditi asinkrono jedan s drugim. Kada su računala imala jedan procesor, bilo je korisno kada su se nastavile mnoge I /O operacije na Java nitima. Sada kada strojevi imaju više procesora, on postaje stvarno koristan alat. Teme Java Thread-a rade na principu višezadaćnosti.

    DrawFBP kao alat

    Streaming programiranje je paradigma u kojoj se programi stvaraju iz komponenti koje imaju skup specifičnih ulaznih i izlaznih portova. Ti su priključci povezani zajedno kako bi napravili graf koji definira logiku i protok podataka. DrawFBP je desktop aplikacija koja može definirati dijagrame tijeka za Java i C #. Ovo je najfunkcionalnija potpunasučelje za programiranje streaminga, ali je donekle ograničeno mogućnostima Java firewalla i nemogućnošću introspekcije informacija dostupnih preko sučelja za preuzimanje komponenti. Ključ sučelja je pojednostavniti stvaranje i razumijevanje programa koji se temelje na protočnoj metodi.

    Povezane publikacije