You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

language.html 6.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Language" content="en-us">
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  5. <meta name="GENERATOR" content="Microsoft FrontPage 6.0">
  6. <meta name="ProgId" content="FrontPage.Editor.Document">
  7. <title>AJDT Project Proposal</title>
  8. <STYLE TYPE="text/css">
  9. <!--
  10. /* FOR THE SDA PAGE */
  11. /*
  12. BODY {margin-top: 15px; margin-left: 15px; margin-right: 15px;}
  13. */
  14. A:link {
  15. color:#4756AC;
  16. }
  17. A:visited {
  18. color:#60657B;
  19. }
  20. A:hover {
  21. color:red
  22. }
  23. INPUT {font:12px "Courier New", sans-serif;}
  24. H2 {
  25. font:18px/18px Verdana, Arial, Helvetica, sans-serif;
  26. color:black;
  27. font-weight:bold;
  28. margin-left: 10px;
  29. line-height:110%;
  30. }
  31. H3 {
  32. font:18px/18px Verdana, Arial, Helvetica, sans-serif;
  33. color:black;
  34. font-weight:bold;
  35. margin-left: 10px;
  36. line-height:110%;
  37. }
  38. H4 {
  39. font:15px/16px Verdana, Arial, Helvetica, sans-serif;
  40. color:black;
  41. font-weight:bold;
  42. margin-left: 10px;
  43. line-height:140%;
  44. }
  45. P {
  46. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  47. margin-right: 10px;
  48. margin-left: 10px;
  49. line-height:130%;
  50. }
  51. .paragraph {
  52. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  53. margin-right: 10px;
  54. margin-left: 10px;
  55. line-height:130%;
  56. }
  57. .smallParagraph {
  58. font:11px/11px Verdana, Arial, Helvetica, sans-serif;
  59. margin-right: 10px;
  60. margin-left: 10px;
  61. line-height:130%;
  62. }
  63. LI {
  64. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  65. text-align:justify;
  66. margin-right: 10px;
  67. margin-left: 15px;
  68. line-height:120%;
  69. }
  70. /*
  71. UL {
  72. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  73. text-align:justify;
  74. margin-right: 10px;
  75. margin-left: 15px;
  76. line-height:120%;
  77. }*/
  78. DL {
  79. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  80. text-align:justify;
  81. margin-right: 10px;
  82. margin-left: 15px;
  83. line-height:120%;
  84. }
  85. B { font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  86. font-weight:bold;
  87. line-height:140%;
  88. }
  89. .footer {
  90. font:10px/10px Verdana, Arial, Helvetica, sans-serif;
  91. color:#888888;
  92. text-align:left
  93. }
  94. .figureTitle {
  95. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  96. text-align:justify;
  97. text-align:center
  98. }
  99. .copyrightNotice {
  100. font:10px/10px Verdana, Arial, Helvetica, sans-serif;
  101. color:#999999;
  102. line-height:110%;
  103. }
  104. .smallHeading {
  105. font:13px/13px Verdana, Arial, Helvetica, sans-serif;
  106. font-weight:bold;
  107. line-height:110%;
  108. }
  109. .tinyHeading {
  110. font:11px/11px Verdana, Arial, Helvetica, sans-serif;
  111. font-weight:bold;
  112. line-height:120%;
  113. }
  114. .newsText {
  115. font:11px/11px Verdana, Arial, Helvetica, sans-serif;
  116. line-height:130%;
  117. }
  118. .smallParagraph {
  119. font:11px/11px Verdana, Arial, Helvetica, sans-serif;
  120. line-height:130%;
  121. }
  122. .fancyHeading {
  123. font:20px/20px Chantilly, Arial, Helvetica, sans-serif;
  124. margin-right: 10px;
  125. color:#6f7a92;
  126. margin-left: 10px;
  127. line-height:130%;
  128. }
  129. -->
  130. </STYLE>
  131. </head>
  132. <BODY BGCOLOR="white">
  133. <h3 align="center">AspectJ Language Design</h3>
  134. <h4>User-suggested New Language Features</h4>
  135. <ul>
  136. <li>&quot;-&quot; wildcard<ul>
  137. <li>
  138. <a href="http://dev.eclipse.org/mhonarc/lists/aspectj-dev/msg00717.html">
  139. http://dev.eclipse.org/mhonarc/lists/aspectj-dev/msg00717.html</a> </li>
  140. <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=34054#c2">
  141. https://bugs.eclipse.org/bugs/show_bug.cgi?id=34054#c2</a> </li>
  142. </ul>
  143. </li>
  144. <li>Class cast pointcut<ul>
  145. <li>
  146. <a href="http://dev.eclipse.org/mhonarc/lists/aspectj-users/msg01479.html">
  147. http://dev.eclipse.org/mhonarc/lists/aspectj-users/msg01479.html</a> </li>
  148. </ul>
  149. </li>
  150. <li>Extensible pointcuts, abstract pointcuts, and interfaces<ul>
  151. <li>
  152. <a href="http://dev.eclipse.org/mhonarc/lists/aspectj-dev/msg00458.html">
  153. http://dev.eclipse.org/mhonarc/lists/aspectj-dev/msg00458.html</a></li>
  154. <li>
  155. <a href="http://dev.eclipse.org/mhonarc/lists/aspectj-dev/msg00467.html">
  156. http://dev.eclipse.org/mhonarc/lists/aspectj-dev/msg00467.html</a> <br>&nbsp;</li>
  157. </ul>
  158. </li>
  159. </ul>
  160. <h4>Key Language Design Properties</h4>
  161. <p>(1) Orthogonal join point model - the different kinds of join points, the
  162. different primitive pointcuts, and the different kinds of advice can be used in
  163. any combination.</p>
  164. <p>This was one of the hardest parts of the design to get right, because of the
  165. &quot;constructor must call super&quot; rule in Java. But we finally got this in 1.0.<br>
  166. <br>
  167. (2) Pointcuts support composition and abstraction. Abelson and Sussman say that
  168. composition and abstraction are the key elements of a real language. Clearly the
  169. pointcut mechanism is the new thing in AspectJ, and so it was critical that it
  170. support composition and abstraction. The fact that someone can write:</p>
  171. <blockquote>
  172. <p><font face="Courier">/* define an abstraction called stateChange */<br>
  173. pointcut stateChange(): call(void FigureElement+.set*(*));<br>
  174. <br>
  175. /* compose pointcuts to get other pointcuts */<br>
  176. pointcut topLevelStateChange(): stateChange() `<br>
  177. &amp;&amp; !cflowbelow(stateChange());</font></p>
  178. </blockquote>
  179. <p>is what makes it possible for people to really work with crosscutting
  180. structure and make their code more clear.<br>
  181. <br>
  182. (3) Statically type checked. The efficiency, code quality and programmer
  183. productivity arguments for this have been made elsewhere, so I won't repeat
  184. them. <br>
  185. <br>
  186. (4) Efficient. AspectJ code is as fast as the equivalent functionality, written
  187. by hand, in a scattered and tangled way.<br>
  188. <br>
  189. (5) Simple kernel. I've heard some people say that AspectJ is too big and too
  190. complex. In the most important sense of simple AspectJ is simple. I can reason
  191. about any AspectJ program with a simple model. The kernel of AspectJ is simple,
  192. and the orthogonality described above means that its easy to start with just the
  193. kernel and slowly add to that.</p>
  194. <p>Its pretty clear to pull out this kernel of AspectJ. I would argue that the
  195. right idea for a standard AOP API<br>
  196. is this kernel, packaged in a way that allows building more sophisticated tools
  197. on top of it.<br>
  198. <br>
  199. (6) Supports multiple weave times. AspectJ is neutral on whether weaving happens
  200. at pre-process, compile, post-process, load, JIT or runtime. This neutrality is
  201. critical. Its why there are serious JVM experts who are already thinking about
  202. JVM support for AspectJ.</p>
  203. <p>There's more, but I think these are the most important ones. I think any
  204. functionality this group comes up with should also meet these criteria.<br>
  205. &nbsp;</p>
  206. </body>
  207. </html>