Gå med i Java

Gå med i Java
Paradigm Procedurell , reflekterande
Designad av G. Stewart von Itzstein
Dök först upp 2000 ( 2000 )
Hemsida joinjava.unisa.edu.au
Influerad av
Java

Join Java är ett programmeringsspråk baserat på join-mönstret som utökar standard Java-programmeringsspråket med join-semantiken för join-kalkylen . Den skrevs vid University of South Australia inom Reconfigurable Computing Lab av Dr. Von Itzstein.

Språkegenskaper

Join Java-tillägget introducerar tre nya språkkonstruktioner:

  • Gå med metoder
  • Asynkrona metoder
  • Ordningsklassmodifierare för att bestämma i vilken ordning mönstren matchas

Samtidighet i de flesta populära programmeringsspråken implementeras med hjälp av konstruktioner som semaforer och monitorer. Bibliotek växer fram (som Java-samtidsbiblioteket JSR-166) som tillhandahåller samtidighetssemantik på högre nivå. Kommunikerande sekventiella processer (CSP), Calculus of Communicating Systems (CCS) och Pi har synkroniseringsbeteenden på högre nivå som definieras implicit genom sammansättningen av händelser vid gränssnitten för samtidiga processer. Join calculus har däremot explicit synkronisering baserad på en lokaliserad konjunktion av händelser definierade som reduktionsregler. Gå med semantik försöker ge explicita uttryck för synkronisering utan att bryta mot den objektorienterade idén om modularisering, inklusive dynamiskt skapande och förstörelse av processer och kanaler.

Join Java-språket kan uttrycka praktiskt taget alla publicerade samtidighetsmönster utan att uttryckligen tillgripa övervakningssamtal på låg nivå. I allmänhet är Join Java-program mer kortfattade än deras Java-motsvarigheter. Den overhead som introduceras i Join Java av uttrycken på högre nivå härledda från Join-kalkylen är hanterbar. Synkroniseringsuttrycken som är associerade med monitorer (vänta och meddela) som normalt finns i metoderna kan ersättas med Join Java-uttryck (Join-metoderna) som utgör en del av metodsignaturen.

Gå med metoder

En Join-metod definieras av två eller flera Join-fragment. En Join-metod kommer att köras när alla fragment av Join-mönstret har anropats. Om returtypen är en standard Java-typ kommer det inledande fragmentet att blockera anroparen tills Join-mönstret är komplett och metoden har exekveras. Om returtypen är av typen signal kommer det inledande fragmentet att återvända omedelbart. Alla efterföljande fragment är asynkrona så blockerar inte den som ringer.

Exempel:

   
         
       
       
        
    
  class  JoinExample  {  int  fragment1  ()  &  fragment2  (  int  x  )  {  //kommer att returnera värdet på x  //till anroparen av fragment1  returnera  x  ;  }  } 

Beställa modifierare

Join-fragment kan upprepas i flera Join-mönster, så det kan finnas ett fall när flera Join-mönster fullbordas när ett fragment anropas. Ett sådant fall kan inträffa i exemplet nedan om B(), C() och D() sedan A() anropas. Det sista A()-fragmentet fullbordar tre av mönstren så det finns tre möjliga metoder som kan anropas. Den ordnade klassmodifieraren används här för att bestämma vilken Join-metod som ska anropas. Standardinställningen och när du använder den oordnade klassmodifieraren är att välja en av metoderna slumpmässigt. Med den beställda modifieraren prioriteras metoderna enligt den ordning de deklareras.

Exempel:

    
        
    
        
    
        
    
        
    
  class  ordered  SimpleJoinPattern  {  void  A  ()  &  B  ()  {  }  void  A  ()  &  C  ()  {  }  void  A  ()  &  D  ()  {  }  signal  D  ()  &  E  ()  {  }  } 

Asynkrona metoder

Asynkrona metoder definieras genom att använda signalreturtypen . Detta har samma egenskaper som void -typen förutom att metoden kommer tillbaka omedelbart. När en asynkron metod anropas skapas en ny tråd för att utföra metoden.

Exempel:

   
       
       
    
  class  ThreadExample  {  signal  thread  (  SomeObject  x  )  {  //denna kod kommer att köras i en ny tråd  }  } 

Besläktade språk


Polyfonisk C skarp är det närmast besläktade språket. efterföljaren till Polyphonic C sharp.

Hårdvara Gå med i Java-språket utökat ytterligare Gå med i Java för att implementera hårdvaru-semantik. Detta språk utökade semantiken i Join Java till FPGA- applikationer.

  • von Itzstein, G, Stewart. och Jasiunas, M (2003). Om implementering av samtidighet på hög nivå i Java. Advances in Computer Systems Architecture 2003, Aizu Japan, Springer Verlag.
  • von Itzstein, G, Stewart. och D. Kearney (2002). Applikationer för Join Java. Proceedings of the Seventh Asia Pacific Computer Systems Architecture Conference ACSAC'2002. Melbourne, Australien, Australian Computer Society: 1-20.
  • von Itzstein, G, Stewart. och D. Kearney (2004). Uttrycket av vanliga samtidighetsmönster i Join Java. Internationell konferens om parallella och distribuerade bearbetningstekniker och applikationer, Las Vegas.
  • Hopf, J., von Itzstein, G, Stewart, et al. (2002). Hårdvara Gå med i Java: Ett språk på hög nivå för omkonfigurerbar hårdvaruutveckling. Internationell konferens om fältprogrammerbar teknologi, Hong Kong.

externa länkar