Mercurial > hg > Papers > 2022 > riono-master
diff Paper/chapter/1-Christie.tex @ 11:a82543f1da47
add TakeFromExample src
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 09 Jan 2022 18:15:51 +0900 |
parents | 39cc44ae7917 |
children | 6116a8fe4a53 |
line wrap: on
line diff
--- a/Paper/chapter/1-Christie.tex Fri Jan 07 14:44:02 2022 +0900 +++ b/Paper/chapter/1-Christie.tex Sun Jan 09 18:15:51 2022 +0900 @@ -78,13 +78,24 @@ \item[PeekFrom(Remote DGM name)] Peekと処理動作は同じであるが、 Remote DGM nameを指定することで、その接続先(Remote)のDGMからPeek操作を行うことができる。 \end{description} -\section{} +\section{annotationを使用したデータの記述} - +ChristieではDGの指定にannotationを使用する。 annotationとはクラスやメソッド、パッケージに対して付加情報を記述できる +Java のMeta Computationである。先頭に@を付けることで記述でき、オリジナルのアノテーションを定義することもできる。 +DGの宣言には型と変数を直接宣言し、変数名としてkeyを記述する。 そして、その宣言の上にannotationでTakeまたはPeekを指定する(ソースコード\ref{src:TakeExample})。 +\lstinputlisting[label=src:TakeExample, caption=Takeの例]{src/Take.java} - +annotationで指定したDGはCGを生成した際にCodeGear.class内で待ち合わせの処理が行われる。 +これにはJavaのreflectionAPIを利用しており、annotationと同時に変数名も取得できるため、面数名によるkeyの指定が可能になっている。 +また、DG内には型情報も保管しており、データ受信した際に適切にキャストを行なっている。 +そのためAliceの問題点としてある、送信されてきたデータが何の型かという問題を解消している。 +Christieのannotationはフィールドに対してのみ記述可能であるため、keyの指定とTake/Peekの指定を必ず一箇所で書くことが明確に決まっている。 +これより、Aliceの様に外のCGからkeyやデータへの干渉をされることがない。 +さらにkeyを変数名にしたことで、動的なkeyの指定やkeyと変数名の不一致による可読性の低下を防ぐことが可能となった。 +リモートノードに対してTake/Peekをする際には、TakeFrom/PeekFrom annotationを用いる(ソースコード\ref{src:TakeFromExample})。 +\lstinputlisting[label=src:TakeFromExample, caption=TakeFromの例]{src/TakeFrom.java}