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}