Присоединяйтесь к Java
Парадигма | Процедурный , Рефлексивный |
---|---|
Разработано | Г. Стюарт фон Ицштайн |
Впервые появился | 2000 |
Веб-сайт | joinjava.unisa.edu.au |
Под влиянием | |
Ява |
Join Java — это язык программирования, основанный на шаблоне соединения , который расширяет стандартный язык программирования Java семантикой соединения исчисления соединения . Он был написан доктором фон Ицштейном в Университете Южной Австралии в Лаборатории реконфигурируемых вычислений.
Языковые характеристики [ править ]
Расширение Join Java представляет три новые языковые конструкции:
- Методы присоединения
- Асинхронные методы
- Модификаторы класса заказа для определения порядка сопоставления шаблонов
Параллелизм в большинстве популярных языков программирования реализуется с помощью таких конструкций, как семафоры и мониторы. Появляются библиотеки (например, библиотека Java JSR-166), обеспечивающие семантику параллелизма более высокого уровня. взаимодействующие последовательные процессы (CSP), Исчисление коммуникационных систем (CCS) и Pi имеют поведение синхронизации более высокого уровня, определенное неявно через композицию событий на интерфейсах параллельных процессов. Исчисление соединений, напротив, имеет явную синхронизацию, основанную на локализованном соединении событий, определенных как правила сокращения. Семантика соединения пытается обеспечить явные выражения синхронизации, не нарушая объектно-ориентированную идею модульности, включая динамическое создание и уничтожение процессов и каналов.
Язык Join Java может выражать практически все опубликованные шаблоны параллелизма без явного обращения к вызовам монитора низкого уровня. В целом программы Join Java более лаконичны, чем их эквиваленты на Java. Накладные расходы, возникающие в Join Java из-за выражений более высокого уровня, полученных из исчисления Join, являются управляемыми. Выражения синхронизации, связанные с мониторами (ожидание и уведомление), которые обычно расположены в теле методов, могут быть заменены выражениями Java Join (методами Join), которые составляют часть сигнатуры метода.
Методы присоединения [ править ]
Метод Join определяется двумя или более фрагментами Join. Метод соединения будет выполнить после вызова всех фрагментов шаблона соединения. Если тип возвращаемого значения является стандартным типом Java, тогда ведущий фрагмент будет заблокируйте вызывающего абонента до тех пор, пока шаблон соединения не будет завершен и метод не будет казнен. Если возвращаемый тип имеет тип сигнала , то ведущий фрагмент вернется немедленно. Все конечные фрагменты асинхронный, поэтому не будет блокировать вызывающего абонента.
Пример:
class JoinExample {
int fragment1() & fragment2(int x) {
//will return value of x
//to caller of fragment1
return x;
}
}
Модификаторы порядка [ править ]
Фрагменты соединения могут повторяться в нескольких шаблонах соединения, поэтому можно случай, когда при вызове фрагмента завершается несколько шаблонов соединения. Такой случай может произойти в приведенном ниже примере, если B(), C() и D(), а затем A() являются называется. Последний фрагмент A() завершает три шаблона, поэтому есть три возможных метода, которые можно вызвать. Заказанный класс Здесь используется модификатор, чтобы определить, какой метод соединения будет вызван. По умолчанию и при использовании модификатора неупорядоченного класса: случайным образом выбрать один из методов. С заказанным модификатор, приоритеты методов устанавливаются в соответствии с порядком их объявления.
Пример:
class ordered SimpleJoinPattern {
void A() & B() {
}
void A() & C() {
}
void A() & D() {
}
signal D() & E() {
}
}
Асинхронные методы [ править ]
Асинхронные методы определяются с помощью сигнала тип возвращаемого значения. Имеет те же характеристики, что и пустота. type, за исключением того, что метод вернет результат немедленно. Когда асинхронный метод вызывается, создается новый поток для выполнения тела метода.
Пример:
class ThreadExample {
signal thread(SomeObject x) {
//this code will execute in a new thread
}
}
Родственные языки [ править ]
Полифонический до-диез — ближайший родственный язык.
Cω — преемник полифонического до-диез.
Язык Hardware Join Java дополнительно расширил Join Java для реализации семантики оборудования. Этот язык расширил семантику Join Java на приложения FPGA .
Ссылки [ править ]
- фон Ицштейн, Дж., Стюарт. и Ясюнас, М. (2003). О реализации параллелизма высокого уровня в Java. Достижения в архитектуре компьютерных систем 2003, Aizu Japan, Springer Verlag.
- фон Ицштейн, Дж., Стюарт. и Д. Кирни (2002). Приложения Join Java. Материалы седьмой Азиатско-Тихоокеанской конференции по архитектуре компьютерных систем ACSAC'2002. Мельбурн, Австралия, Австралийское компьютерное общество: 1–20.
- фон Ицштейн, Дж., Стюарт. и Д. Кирни (2004). Выражение общих шаблонов параллелизма в Join Java. Международная конференция по методам и приложениям параллельной и распределенной обработки, Лас-Вегас.
- Хопф Дж., фон Ицштайн Г., Стюарт и др. (2002). Аппаратное обеспечение Java: язык высокого уровня для разработки реконфигурируемого оборудования. Международная конференция по программируемым технологиям, Гонконг.