Strumienie Java: tworzenie i uzupełnianie

Java jest językiem programowania wysokiego poziomu opracowanym przez Sun Microsystems. Pierwotnie stworzony, aby tworzyć programy dla tweetów i urządzeń kieszonkowych, ale później stał się popularnym i popularnym językiem do tworzenia aplikacji internetowych. Oracle przejęła Sun Microsystems w styczniu 2010 roku, więc Java jest teraz obsługiwana i dystrybuowana przez Oracle. Java używa zorientowanego obiektowo modelu programowania i może być używana do tworzenia aplikacji, które mogą działać na tym samym komputerze lub być rozproszone między serwerami i klientami w sieci. Można go również użyć do utworzenia małego modułu programowego lub apletu do użycia jako część strony internetowej.




Korzyści

Składnia języka Java jest podobna do języka C ++, ale jest to język programowania zorientowany ściśle obiektowo. Na przykład większość programów Java zawiera klasy używane do identyfikowania obiektów i metod. Metody z kolei są przypisane do oddzielnych klas. Java jest również znana jako bardziej rygorystyczny system znaków formalnych niż C ++. Oznacza to, że zmienne i funkcje muszą być jasno zdefiniowane, aby kod źródłowy mógł wykrywać błędy lub "wyjątki" łatwiej i szybciej niż inne języki. Ogranicza także inne rodzaje błędów, które mogą być spowodowane niepewnymi zmiennymi lub nieprzypisanymi typami. W przeciwieństwie do plików wykonywalnych Windows (pliki .EXE) lub plików Macintosh .APP, programy Java nie uruchamiają się bezpośrednio w systemie operacyjnym. Zamiast tego dane są interpretowane przez wirtualną maszynę Java lub maszynę JVM,który działa na wielu platformach. Wszystkie aplikacje Java są wieloplatformowe i mogą działać na różnych platformach, w tym na komputerach Macintosh, Windows i Unix. JVM musi być zainstalowana na potrzeby uruchamiania aplikacji lub apletów. Dostępne do bezpłatnego pobrania.


Elementy i zasady

Sukces i popularność Javy przyczyniły się do charakterystyki języka. Wymieńmy główne:
  • Programy tworzone na Javie mają jakość przenośności w sieci. Kod źródłowy jest tak skompilowany, że język programowania jest kodem bajtowym, który można uruchomić w dowolnym miejscu w sieci na serwerze lub kliencie za pomocą wirtualnej maszyny Java (JVM). JVM interpretuje kod bajtowy w kodzie, który będzie działał na sprzęcie komputerowym. Wręcz przeciwnie, większość języków programowania, takich jak COBOL, C ++, Visual Basic lub Smalltalk, kompiluje kod do pliku binarnego. Pliki binarne zależą od platformy, więc program napisany dla komputera z systemem Windows opartym na Intel nie może uruchomić komputera Mac, komputera z systemem Linux ani komputera typu mainframe IBM. JVM zawiera opcjonalny kompilator JIT (Just-in-time Compiler), który dynamicznie kompiluje kod bajtowy do kodu wykonywalnego jako alternatywy do interpretowania instrukcji kodu bajtowego na raz. W wielu przypadkach dynamiczna kompilacja JIT jest szybsza niż interpretacja maszyny wirtualnej.
  • Wiarygodność kodu. W przeciwieństwie do programów napisanych w C ++ i niektórych innych językach, obiekty Java nie zawierają linków do zewnętrznych danych lub innych znanych obiektów. Zapewnia to, że instrukcja nie zawiera adresu pamięci w innej aplikacji lub w samym systemie operacyjnym, dzięki czemu programi sam system operacyjny może się skończyć lub spowodować awarię. JVM przeprowadza serię kontroli każdej witryny, aby zapewnić integralność.
  • Java jest językiem obiektowym. Obiekt może skorzystać z faktu, że jest częścią klasy obiektów i dziedziczy kod wspólny dla klasy. Ta metoda może być uważana za jedną z funkcji lub zachowania obiektu. Metoda obiektowa jest stosunkowo rozpowszechniona w nowoczesnym krajobrazie programowania, jednak w 1996 r. Tylko kilka języków skutecznie stosowało koncepcje obiektowe i wzorce projektowe.
  • Elastyczność apletów. Aplet Java ma wszystkie funkcje przeznaczone do szybkiego uruchomienia.
  • Java jest łatwa do nauczenia. Składnia języka jest podobna do C ++. Jeśli programista ma język C /C ++, opanowanie tego języka nie będzie trudne.
  • Powszechnym błędnym przekonaniem jest to, że istnieje związek między Javą i javascript. Języki te są podobne pod względem składni, ale z konstruktywnego punktu widzenia istnieją różne struktury.
  • Platformy

    Istnieją trzy kluczowe platformy, na których programiści opracowują aplikacje Java:
  • Java SE - Proste autonomiczne aplikacje są tworzone przy użyciu Java Standard Edition. Dawniej znany jako J2SE, Java SE udostępnia interfejsy API potrzebne do tworzenia tradycyjnych aplikacji komputerowych.
  • Java EE - Java Enterprise Edition, wcześniej znana pod nazwą J2EE, zapewnia możliwość tworzenia komponentów serwera, które mogą odpowiadać na cykl internetowy żądań odpowiedzi. Ten układ umożliwia tworzenie aplikacji Java, które mogą wchodzić w interakcje z klientami internetowymi, w tym przeglądarkami internetowymi, klientami opartymi naCORBA, a nawet usługi sieciowe oparte na REST i SOAP.
  • Java ME - Java to także łatwa platforma do tworzenia aplikacji mobilnych, znana jako Java Micro Edition, wcześniej znana pod nazwą J2ME. Java ME okazała się bardzo popularną platformą do tworzenia urządzeń wbudowanych, ale walczyła o sukces na arenie rozwoju smartfonów. Jeśli chodzi o rozwój smartfonów, Android stał się mobilną platformą programistyczną.
  • Przykłady użycia

    Korzystając z różnych komponentów dostarczanych przez Java EE, programiści są łatwo pisać programy, które używają popularnych wzorców projektowych oprogramowania i powszechnie uzgodnionych zaawansowanych technik. Struktury Struts, Spring i JavaServer Faces używają serwletu Java do implementacji wzorca projektowania kontrolera front-end do centralizacji zapytań.
    Tymczasem większość ekosystemów Java to ogromna liczba projektów open source, platform oprogramowania i interfejsów API, które stworzyły społeczność używającą języka. Na przykład, Apache Foundation obsługuje różne projekty oparte na Javie, w tym:
  • Simple Java Logs (SLF4J).
  • Duże platformy przetwarzania danych.
  • Platformy integracyjne, takie jak Apache Camel, Apache Axis i CXF do rozwoju usług internetowych RESTful.
  • Platformy rozwoju mikro-usług.
  • Inne firmy będą próbowały przenieść środowisko Java EE do chmury. Ponieważ programiści tworzą usługi w chmurze, kluczową kwestią jest możliwość szybkiego skalowania tych usług, a także możliwość wspólnej pracychmury

    Krytyka

    Składnia Java jest często potępiana za słownictwo. Nadmierne sieci i moduły pobierające, silne pisanie, powodują nadpisywanie programów Java. W odpowiedzi "pojawiło się kilka języków peryferyjnych, w tym Groovy, która stała się bardzo popularna.Inną wadą jest to, że aplikacje Java nie mogą być liniowo skalowalne w świecie wysokowydajnych komputerów. do obiektów wewnątrz, złożone i równoległe operacje na liście mogą sprawić, że JVM znajdzie rozwiązania wychodzące, a język Scala rozwiązuje wiele słabości języka Java, które zmniejszają zdolność powiększania
    .

    Strumienie Java

    Strumienie - paradygmat programowania, opracowany przez J. Podkery'ego Rodkera-Morrisona w późnych latach 60., który używa terminu "przetwarzanie danych" do projektowania i tworzenia aplikacji. Wątek Java definiuje zastosowanie sieci procesów, które wymieniają dane za pomocą bloków danych (pakietów informacyjnych), które poruszają się przez zdefiniowane połączenie. Procesy te można łączyć w nieskończoność, tworząc aplikacje bez zmiany ich wewnętrznej zawartości. W ten sposób strumień jest zorientowany na komponent. Tworzenie strumienia Java jest specyficzną formą programowania przepływu danych. Oparte na ograniczonych buforach pakiety informacyjne o określonym okresie użytkowania, nazwanych portach i określonej definicji połączeń. Procesy współdziałają poprzez połączenia, do których można uzyskać dostęp za pośrednictwem portów. Połączenia są zwykle realizowane za pośrednictwem ograniczonych buforów. Rozmiar bufora lub maksymalna liczbaPakiety, które mogą zawierać kolejki, nazywane są połączeniami przepustowości. Niektóre implementacje umożliwiają podłączenie o pojemności od 0 oznacza, że ​​dane adres IP natychmiast przesyłane między wysyłania i odbierania.

    Definicje

    Programowanie strumieniowego uważa program jako zestaw procesów („czarnej skrzynki”), która za pomocą związku, który przetwarza szukają pomocy portów. Proces ten jest przykładem składnik działa jednocześnie z innymi procesami, w tym innych przypadkach w ten sam komponent. Wspólne podejście w streamingu programu programowanie konceptualizacji szereg strumieni i subpotokov występujących w serii procesów pokrewnych. Równoległość zrealizowane przez ograniczenie komunikacji między procesami z użyciem strumienia pakietów przepływu informacji na zakończeniu, Java.
    wizualne programowanie w tym kontekście, ze względu na połączenie elementów tekstowych lub wykresów w widoku dwuwymiarowego, która wykorzystuje moc ludzkiego rozpoznawania wzorców i stylu wizualnego myślenia. Programowanie tekstu jest wcześniej dostępne na poziomie komponentu, a dla prostych aplikacji - na poziomie sieci. Główne cechy to ponowne użycie kodu, testowanie i równoległość.

    Wprowadzenie

    Programowanie strumieniowe definiuje aplikacje za pomocą metafory "fabryka danych". Aplikacja jest uważany nie tylko jako kolejny proces, który rozpoczyna się w określonym czasie, a następnie czyni jedną operację w jednostce czasu, aby zakończyć, ale jako siećprocesy asynchroniczne, połączone strumieniami uporządkowanych bloków danych zwanych pakietami informacyjnymi (IP). Sieć jest definiowana przez procesy zewnętrzne jako lista połączeń, które są interpretowane jako część oprogramowania, zwykle nazywana harmonogramem. Procesy współdziałają poprzez połączenie o stałej przepustowości. Połączenie łączy się z procesem przy użyciu portu, którego nazwa została uzgodniona między kodem procesowym a definicją sieci. Jeden i ten sam kod może wykonać więcej niż jeden proces. W dowolnym momencie ten adres IP może należeć tylko do jednego procesu lub być na drodze między dwoma procesami. Porty mogą być proste lub masywne. Ponieważ procesy wątków Java mogą być uruchamiane w nieskończoność, dane wejściowe i wyjściowe, aplikacje używające tej metody zwykle działają mniej niż zwykle aplikacje i optymalnie wykorzystują wszystkie procesory na komputerze.

    Sieć

    Definicja sieci jest zwykle schematycznie przekształcana w listę połączeń w niektórych językach lub zapis niższego poziomu. Strumienie we /wy Java są często językiem programowania wizualnego na tym poziomie. Bardziej złożone definicje sieci mają strukturę hierarchiczną, która składa się z podsieci z elastyczną łącznością. Inne przykłady wątków Java oparte są na tradycyjnych językach programowania. W szczególności RaftLib używa operatorów C ++ i podobnych do Iostream do uruchamiania strumienia Java.

    Opis procesu

    Praca z wątkami Java pokazuje powiązanie danychsłabe połączenie między komponentami. Koncepcja swobodnej komunikacji jest z kolei związana z koncepcją architektur zorientowanych na usługi. Puli wątków Java spełnia wiele kryteriów dla takiej architektury.
    Metoda przesyłania strumieniowego przyczynia się do wysokiego poziomu funkcjonalnego stylu specyfikacji, co upraszcza tworzenie hipotetycznych warunków wstępnych zachowania systemu. Przykładem przepływów Java jest rozproszony model ruchu danych do konstruktywnego projektowania i analizy rozproszonych semantycznych protokołów.

    Cechy

    Programowanie strumieniowe ma następujące wyjątkowe właściwości:
  • Strukturalność: diagramy i komponenty mają jasną strukturę (interfejs, stan i zachowanie).
  • Projekt systemu dzieli się na dwie warstwy: graficzną (zwykle wizualną) i składową (zazwyczaj tekstową). Pod względem architektury oprogramowania zachęca się różne role. Jako przykład: wątki Java są zarządzane przez role-playing functions Graphic Designer and Component-Implementer.
  • Zasada równoległości: każdy proces działa w swoim strumieniu, powiązanym programie lub innym środowisku.
  • ​​
  • Aktywacja - z punktu widzenia projektanta punkt graficzny procesu jest wykonywany jednocześnie, a funkcja oprogramowania planistycznego pozwala na rozłożenie czasu procesora i zarządzanie innymi usługami, jeśli jest to niezbędne do obsługi tej funkcjonalności.
  • Pakiety informacyjne podczas tworzenia strumienia Java mają cykl życia i należą tylko do jednego procesu.
  • Komponenty mogą mieć wiele wejść lub wyjść.
  • Aplikacja jest wykresem, a nie drzewem. Można stosować związki cykliczne (pętle sprzężenia zwrotnego).
  • Połączenia można łączyć w jeden wykres, co oznacza, że ​​pakiety różnych łuków docierają do portu wejściowego. Połączenia powinny być podzielone przez komponent ze względu na różnorodność strategii dystrybucji i zasad własności IP.
  • Połączenia są realizowane jako ograniczone bufory o wolumenie od 0 do liczby ograniczonej przez wdrożenie.
  • Przykłady

    Komponenty przepływu danych Java często tworzą pary komplementarne. W zwykłej logice programista szybko stwierdza, że ​​ani struktura wejściowa, ani wyjściowa nie może być używana do sterowania przepływem hierarchii wywołań sterujących. W wątkach wprowadzających Javę opis problemu oferuje rozwiązanie. "Słowa" są wyraźnie opisane w opisie problemu, dlatego programista powinien je uwzględnić jako pakiety informacyjne (IP). W strumieniach wejściowych Java nie ma jednej hierarchii wywołań, więc programista nie musi ustawiać priorytetu. Podczas generowania strumienia Java pakiety informacji źródłowych (IIP) mogą być używane do wskazania informacji parametrycznych, takich jak żądana długość rekordu wyjściowego lub nazw plików. IIP są blokami danych, które są powiązane z portem w definicji sieci, która staje się "zwykłym" adresem IP, gdy "odebrany" parametr zostanie wysłany do odpowiedniego portu.

    Aktualizacja partii

    Ten rodzaj programu obejmuje przeniesienie pliku informacji (zmian, uzupełnień i usunięć) do pliku głównego i utworzenie zaktualizowanego pliku głównego oraz jednego lub więcej raportów. Wystarczy nowy przepływ JavaTrudno jest szyfrować za pomocą synchronicznego kodu proceduralnego, ponieważ dwa (czasem więcej) strumienie wejściowe muszą być zsynchronizowane. W architekturze strumieniowania składnik wielokrotnego użytku znacznie ułatwia rejestrowanie tego typu aplikacji, ponieważ narzędzie to łączy dwa strumienie i wstawia dane IP w celu określenia poziomów grup. Załóżmy, że jeden lub dwa wątki Java składają się z adresów IP z kluczowymi wartościami 1 2 i 3, a adresy IP drugiego wątku mają wartości klucza 111221 313233 i 41, gdzie pierwsza cyfra odpowiada wartości klucza głównego. Przy użyciu nawiasów do wyświetlania adresów IP, zebrany strumień wyjściowy będzie wyglądał następująco: (m1 d11 d12) (m2 d21) (m3 d31 d32d33) (d41).

    Procesy multipleksowania

    Programowanie strumieniowe obsługuje multipleksowanie procesów. Ponieważ komponenty są tylko do odczytu, dowolna liczba instancji tego komponentu ("procesy") może być asynchronicznie uruchamiana względem siebie. Gdy komputery miały jeden procesor, było to przydatne, gdy wiele operacji we /wy na wątkach Java kontynuowało pracę. Teraz, gdy maszyny mają wiele procesorów, staje się naprawdę użytecznym narzędziem. Wątki wątku Java działają na zasadzie wielozadaniowości.

    DrawFBP jako narzędzie

    Programowanie strumieniowe jest paradygmatem, w którym programy są tworzone z komponentów, które mają zestaw określonych portów wejściowych i wyjściowych. Porty te są ze sobą połączone, tworząc wykres, który definiuje logikę i przepływ danych. DrawFBP to aplikacja komputerowa, która może definiować wykresy przepływu dla Java i C #. Jest to najbardziej funkcjonalnie kompletneInterfejs do programowania strumieniowego, ale jest nieco ograniczony możliwościami zapory ogniowej Java i niemożnością introspekcji informacji dostępnych przez interfejs pobierania komponentów. Kluczem do interfejsu jest uproszczenie tworzenia i zrozumienia programów opartych na metodzie przepływu.

    Powiązane publikacje