Java потоци: Създаване и завършване

Java е програмен език от високо ниво, разработен от Sun Microsystems. Първоначално създаден за разработване на програми за туитове и джобни устройства, но по-късно става популярен и популярен език за създаване на уеб приложения. Oracle придоби Sun Microsystems през януари 2010 г., така че Java вече се поддържа и разпространява от Oracle. Java използва обектно-ориентиран модел на програмиране и може да се използва за създаване на приложения, които могат да се изпълняват на един и същ компютър или да се разпределят между сървъри и клиенти в мрежата. Също така може да се използва за създаване на малък програмен модул или аплет за използване като част от уеб страница.




Ползи

Синтаксисът на Java е подобен на C ++, но е строго обектно-ориентиран език за програмиране. Например, повечето програми на Java съдържат класове, които се използват за идентифициране на обекти и методи. Методите, от своя страна, са възложени на отделни класове. Java е известна и като по-строга система за официален знак от C ++. Това означава, че променливите и функциите трябва да бъдат ясно дефинирани, така че изходният код да може да открива грешки или "изключения" по-лесно и по-бързо от другите езици. Той също така ограничава други видове грешки, които могат да бъдат причинени от несигурни променливи или неназначени типове. За разлика от изпълними Windows файлове (.EXE файлове) или Macintosh файлове .APP файлове, Java програмите не стартират директно в операционната система. Вместо това данните се интерпретират от Java виртуална машина или JVM,който работи на няколко платформи. Всички Java приложения са мултиплатформени и могат да се изпълняват на различни платформи, включително компютри Macintosh, Windows и Unix. JVM трябва да бъде инсталиран за приложения или аплети за изпълнение. Предлага се безплатно изтегляне.


Елементи и принципи

Успехът и популярността на Java допринесоха за характеристиките на езика. Нека изброим основните:
  • Програми, създадени на Java, имат качеството на преносимост в мрежата. Изходният код се компилира така, че програмният език е байт-код, който може да се изпълнява навсякъде в мрежата на сървъра или клиента с Java виртуална машина (JVM). JVM интерпретира байтовия код в кода, който ще работи на хардуера на компютъра. Напротив, повечето програмни езици, като COBOL, C ++, Visual Basic или Smalltalk, съставят кода в двоичен файл. Двоичните файлове зависят от платформата, така че програма, написана за компютър с Windows, базирана на Intel, не може да изпълнява Mac, Linux машина или мейнфрейм IBM. JVM включва опционален компилатор Just-in-Time Compiler (JIT), който динамично компилира байтовия код в изпълним код като алтернатива на интерпретирането на едно байткод инструкция едновременно. В много случаи динамичното компилиране на JIT е по-бързо от интерпретирането на виртуална машина.
  • Надеждност на кода. За разлика от програмите, написани на C ++ и на някои други езици, Java обектите не съдържат връзки към външни данни или други известни обекти. Това гарантира, че инструкцията не съдържа адрес за съхранение в друго приложение или в самата операционна система, поради което програматаи самата операционна система може да приключи или да причини неизправност. JVM извършва серия от проверки на всеки сайт, за да се гарантира целостта.
  • Java е обектно-ориентиран език. Един обект може да се възползва от факта, че е част от клас от обекти и наследява код, който е общ за класа. Този метод може да се разглежда като една от характеристиките или поведението на обекта. Обектно-ориентираният метод е сравнително широко разпространен в съвременния програмен пейзаж, но през 1996 г. само няколко езика ефективно прилагат обектно-ориентирани концепции и дизайнерски модели.
  • Гъвкавост на аплетите. Java аплетът разполага с всички функции, предназначени за бързо стартиране.
  • Java е лесна за научаване. Синтаксисът на езика е подобен на C ++. Ако разработчикът има C /C ++ език, няма да е трудно да овладее този език.
  • Често срещано погрешно схващане е, че има връзка между Java и javascript. Тези езици са сходни в синтаксиса, но от конструктивна гледна точка съществуват различни структури.
  • Платформи

    Съществуват три ключови платформи, на които програмистите разработват Java приложения:
  • Java SE - Обикновените самостоятелни приложения се разработват чрез Java Standard Edition. По-рано известен като J2SE, Java SE предоставя API, необходими за разработване на традиционни настолни приложения.
  • Java EE - Java Enterprise Edition, по-рано известен като J2EE, предоставя възможност за създаване на сървърни компоненти, които могат да отговарят на уеб цикъла на заявката за отговор. Това разположение ви позволява да създавате Java приложения, които могат да взаимодействат с интернет клиенти, включително уеб браузъри, базирани на клиентиCORBA и дори уеб услуги, базирани на REST и SOAP.
  • Java ME - Java също осигурява лесна платформа за мобилно развитие, известна като Java Micro Edition, известна преди като J2ME. Java ME се оказа много популярна платформа за разработване на вградени устройства, но се бореше да успее в арена за разработка на смартфони. По отношение на разработването на смартфони, Android се превърна в мобилна платформа за разработка.
  • Примери за използване

    Използвайки различните компоненти, предоставени от Java EE, разработчиците могат лесно да пишат програми, които използват популярни шаблони за проектиране на софтуер и общоприети усъвършенствани техники. Рамките на Struts, Spring и JavaServer Faces използват Java Servlet, за да реализират модела на дизайн на предния край за централизация на заявки.
    Междувременно повечето от екосистемите на Java са огромен брой проекти с отворен код, софтуерни платформи и API, които са създали общност, използваща език. Например, Apache Foundation е домакин на различни Java-базирани проекти, включително:
  • Simple Java Logs (SLF4J).
  • Големи платформи за обработка на данни.
  • Интеграционни платформи като Apache Camel, Apache Axis и CXF за разработване на уеб услуги RESTful.
  • Платформи за развитие на микро услуги. Други предприятия ще се опитат да прехвърлят околната среда Java EE в облак. Тъй като разработчиците създават облачни услуги, възможността за бързо мащабиране на тези услуги е ключов въпрос, както и възможността за съвместна работаоблак.

    Критика

    Синтаксисът на Java често е осъждан за красноречиво. Прекалените мрежи и гетерите, силно типизиране, правят Java-програмите раздути. В отговор на това се появиха няколко периферни езика, които решиха този проблем, включително Groovy, който стана бързо популярен. За обекти отвътре, сложни и паралелни операции на базата на списък могат да доведат JVM да намери изходящи решения, езикът на Scala решава много от слабостите на езика Java, които намаляват възможностите му за увеличаване
    .

    Java Streams

    Потоци - парадигма за програмиране, измислена от J. Podkery Rodker-Morrison в края на 60-те години, която използва термина "обработка на данни" за проектиране и създаване на приложения. Нишката на Java определя приложението на мрежата от процеси, които обменят данни, използвайки блокове данни (информационни пакети), които се движат през определена връзка. Тези процеси могат да бъдат свързани безкрайно, за да се формират приложения, без да се променя тяхното вътрешно съдържание. По този начин потокът е ориентиран към компонента. Създаването на Java поток е специфична форма на програмиране на потока от данни. Въз основа на ограничени буфери, информационни пакети с определен срок на експлоатация, имена на портове и конкретно определение за връзки. Процесите взаимодействат чрез връзки, до които се осъществява достъп през портовете. Връзките обикновено се осъществяват чрез ограничени буфери. Размер на буфера или максимален бройПакетите, които могат да съдържат опашки, се наричат ​​връзки за честотна лента. Някои реализации ви позволяват да установите връзка с капацитет 0, което означава, че IP адресите на данните се предават незабавно между процесите на изпращане и получаване.

    Определение

    Програмирането на поточно възпроизвеждане разглежда програмата като набор от процеси ("черни кутии"), които чрез връзките, до които се осъществяват достъп до процесите, използват портове. Процесът е екземпляр на компонент, който работи едновременно с други процеси, включително други екземпляри на същия компонент. Общият подход в програмирането на поточно предаване е да се концептуализира програмата като поредица от потоци и под-потоци, които се случват чрез серия от свързани процеси. Паралелността се осъществява чрез ограничаване на връзката между процесите, използващи информационни потоци на пакети, когато потокът Java е завършен.
    Визуалното програмиране в този контекст включва свързване на текстови компоненти или диаграми в двуизмерен изглед, който използва способността за разпознаване на човешки образи и визуални стилове на мислене. Програмирането на текст преди това е налично на ниво компонент, а за прости приложения - на мрежово ниво. Основните характеристики са повторно използване на кода, тестване и паралелизъм.

    Въведение

    Потоковото програмиране определя приложения, използващи метафора "фабрика за данни". Приложението не се разглежда като единичен, последователен процес, който започва в определен момент във времето, а след това прави една операция за единица време до пълното завършване, а като мрежаасинхронни процеси, свързани с потоци от структурирани блокове данни, наречени информационни пакети (IP). Мрежата се определя от външни процеси като списък от връзки, които се интерпретират като част от софтуера, наричан обикновено планировчик. Процесите взаимодействат чрез връзка с фиксиран капацитет. Връзката се свързва с процеса с помощта на порт, който има съгласувано име между кода на процеса и дефиницията на мрежата. Един и същ код може да изпълнява повече от един процес. Във всеки един момент този IP адрес може да принадлежи само на един процес или да е на път между два процеса. Портовете могат да бъдат прости или масивни. Тъй като процесите в Java потока могат да продължат да работят неограничено, с входни и изходни данни, приложенията, които използват този метод, обикновено работят по-малко от обичайните приложения и оптимално използват всички процесори на машината.

    Мрежа

    Определението за мрежа обикновено се трансформира схематично в списък от връзки на някакъв език или нотация на по-ниско ниво. Java I /O потоците често са езикът на визуалното програмиране на това ниво. По-сложните дефиниции на мрежи имат йерархична структура, която се състои от подмрежи с гъвкава свързаност. Други примери за Java теми са базирани на традиционни езици за програмиране. В частност, RaftLib използва C ++ и iostream-подобни оператори за изпълнение на Java потока.

    Описание на процеса

    Работата с нишки в Java показва свързването на данни като най-многослаба връзка между компонентите. Концепцията за свободна комуникация, от своя страна, е свързана с концепцията за ориентирани към услугите архитектури. Басейнът с нишки в Java отговаря на редица критерии за такава архитектура.
    Методът за стрийминг допринася за функционалния стил на високо ниво на спецификациите, което опростява развитието на хипотетични предпоставки за поведение на системата. Пример за Java потоци е модел на разпределен трафик на данни за конструктивно проектиране и анализ на семантиката на разпределения протокол.

    Характеристики

    Програмирането на потока има следните уникални свойства:
  • Структуралност: диаграмите и компонентите имат ясна структура (интерфейс, състояние и поведение).
  • Дизайнът на системата е разделен на два слоя: графичен (обикновено визуален) и компонент (обикновено текстов). По отношение на софтуерната архитектура се насърчават различни роли. Като пример: Java потоците се управляват от ролеви функции Graphic Designer и Component-Implementer.
  • Принципът на паралелизъм: всеки процес работи в своя поток, свързана програма или друга среда.
  • ​​
  • Активиране - от гледна точка на дизайнера, графичната точка на процеса се изпълнява едновременно, а функцията на софтуера за планиране ви позволява да разпределяте процесорното време и да управлявате други услуги, както е необходимо за поддържане на тази функционалност.
  • Информационните пакети при създаването на Java поток имат жизнен цикъл и принадлежат само на един процес.
  • Компонентите могат да имат множество входове или изходи.
  • Приложението е графика, а не дърво. Могат да се използват циклични съединения (контури за обратна връзка).
  • Връзките могат да бъдат комбинирани в графика, което означава, че пакетите с различни дъги достигат до входния порт. Връзките трябва да бъдат разделени чрез компонента, поради разнообразието от стратегии за разпространение и правилата за собственост на ИС.
  • Връзките се изпълняват като ограничени буфери с обем от 0 до брой, ограничен от изпълнението.
  • Примери

    Компонентите на потоците от данни Java често формират допълващи се двойки. В обичайната логика, програмистът бързо намира, че нито входната, нито изходната структура могат да бъдат използвани за контрол на потока на йерархията на управляващите повиквания. В нишките на въвеждането на Java, описанието на проблема предлага решение. "Думите" са изрично описани в описанието на проблема, така че разработчикът трябва да ги разглежда като информационни пакети (IP). В входните потоци на Java няма единна йерархия на повикванията, така че програмистът не трябва да задава приоритет. При генериране на Java поток могат да се използват пакети с информация за източниците (IIP), за да се посочи параметрична информация, като желаната дължина на изходния запис или имена на файлове. IIPs са блокове данни, които са свързани с порт в дефиниция на мрежата, която става "обикновен" IP адрес, когато параметърът "received" е издаден на съответния порт.

    Пакетно обновяване

    Този тип програма включва прехвърлянето на файл с информация (промени, допълнения и изтривания) към главния файл и създаването на актуализиран главен файл и един или повече отчети. Нов поток на Java е достатъченТрудно е да се криптира с помощта на синхронен процедурен код, тъй като два (понякога повече) входни потока трябва да бъдат синхронизирани. В поточната архитектура компонентът за многократна употреба го прави много по-лесно да записва този тип приложение, защото този инструмент комбинира два потока и вмъква IP данни, за да определи нивата на групата. Да приемем, че една или две нишки на Java се състоят от IP адреси с ключови стойности 1 2 и 3 и IP адресите на втория конец имат ключови стойности от 111221 313233 и 41, където първата цифра съответства на стойността на главния ключ. Използвайки скобите за показване на IP адреси, събраният изходен поток ще изглежда така: (m1 d11 d12) (m2 d21) (m3 d31 d32d33) (d41).

    Процеси на мултиплексиране

    Потоковото програмиране поддържа мултиплексиране на процеси. Тъй като компонентите са само за четене, произволен брой копия на този компонент ("процеси") могат да се изпълняват асинхронно един с друг. Когато компютрите имаха един процесор, това беше полезно, когато много I /O операции в Java потоците продължиха. Сега, когато машините имат множество процесори, той става наистина полезен инструмент. Конците на Java Thread работят на принципа на многозадачност.

    DrawFBP като инструмент

    Потоковото програмиране е парадигма, при която програмите се създават от компоненти, които имат набор от специфични входни и изходни портове. Тези портове са свързани заедно, за да направят графика, която определя логиката и потока от данни. DrawFBP е десктоп приложение, което може да дефинира диаграми за Java и C #. Това е най-функционално завършеноинтерфейсът за програмиране на стрийминг, но донякъде е ограничен от възможностите на Java защитната стена и неспособността на интроспекцията на информацията, достъпна чрез интерфейса за изтегляне на компоненти. Ключът към интерфейса е да се опрости създаването и разбирането на програмите, базирани на метода на потока.

    Свързани публикации