-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathNEWS.html
966 lines (704 loc) · 30.1 KB
/
NEWS.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>What's new in JAC</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="basic.css" title="basic style" media="all">
</head>
<body>
<h1><a name="0.12">What's new in JAC 0.12</a></h1>
<p class="important">Because of some internal changes in the way
RTTI information is cached, you must clear you <span
class="directory">classes_BCEL</span> directory.</p>
<h2>Core/Aspect programming model</h2>
<ul>
<li>
<a href="http://sourceforge.net/projects/aopalliance">AOP Alliance</a> API support<br/>
as a consequence:
<ul>
<li>wrappers must now implement two methods:
<a href="http://aopalliance.sourceforge.net/doc/org/aopalliance/intercept/MethodInterceptor.html"><i>invoke</i></a> and
<a href="http://aopalliance.sourceforge.net/doc/org/aopalliance/intercept/ConstructorInterceptor.html"><i>construct</i></a>.
<i>invoke</i> wraps method executions and
<i>construct</i> wraps constructor executions.</li>
<li>the <i>pointcut</i> method signature has changed
(no more wrapping method name).</li>
</ul>
</li>
</ul>
<h2>Core/RTTI</h2>
<ul>
<li>Added support for <em>import</em> statement in .acc files</li>
<li>New configuration method in RTTI: defineRepository. It
allows to specify that when the instances of a class are
requested (with ObjectRepository.getObjects(ClassItem), instead
of returning all instances of the class known by the system,
just return a collection of a so-called repository
object.</li>
<li>Fixed some bytecode analysis bugs with doubles.</li>
<li>Added clone() utility method to clone an object and it's
relations if they are aggregations (see
o.o.jac.core.Utils.clone)</li>
<li>Field dependencies can be declared for expression
fields. See RttiConf.addFieldDependency() configuration
method.</li>
<li>Log messages contain date and time.</li>
<li>acc files: Fixed a bug in negated( those with a "!")
expression parsing</li>
<li>log4j is used so that we can we just4log and not suffer a
performance loss for unactivated logs</li>
<li>defineRepository can be used with any expression field for
the collection.</li>
</ul>
<h2>New aspect: timestamp</h2>
<p>Register last modification dates of objects.</p>
<h2>Cache</h2>
<p>Can now work with the timestamp aspect.</p>
<h2>New aspect: export</h2>
<p>It's not really an aspect since it does not use any wrapper,
but it's configured like an aspect. It can export object to an
XML file and, of course, import the objects back from that kind
of file.</p>
<h2>IDE</h2>
<ul>
<li>Packages can contain resources, which can be edited with an
external program</li>
<li>Introduced per user config</li>
<li>Fixed application main class setting</li>
<li>Can build a jar containing classes, aspect configuration
files and jac application descriptors.</li>
<li>Added "goto line" feature on classes.</li>
<li>Add export/import</li>
<li>com.sun.tools.javac can be used as the compiler for better
performances</li>
<li>Added options to debug applications with standard java debugger</li>
</ul>
<h2>GUI</h2>
<ul>
<li>Enhanced calculated field refresh (see RttiConf.addFieldDependency)</li>
<li>Web: pressing enter in an editor of the embedded to add
object of a table adds the object (javascript)</li>
<li>Web: Double clicking on a table's row views the object
(equivalent to clicking the "view" link)</li>
<li>Swing: in the file editor, "~" at the beginning of a
filename is replaced by the user's home directory</li>
<li>Added percentage editor and viewer</li>
<li>new config method setSlowOperation() to display "please wait"
message for slow methods</li>
<li>Dialog boxes now have OK/Cancel/Refresh buttons</li>
<li>Use local format to edit and display floating point
numbers</li>
<li>Tree nodes are sorted</li>
<li>Length are specified using units such px, ex or em
instead of dual pixels/characters values.</li>
</ul>
<h2>Persistence</h2>
<ul>
<li>Added support for multiple storages</li>
<li>FSStorage: do not create empty files</li>
<li>FSStorage: encoding of files can be specified</li>
</ul>
<h2>Confirmation</h2>
<ul>
<li>Confirmation messages can be customized</li>
</ul>
<h1><a name="0.11">What's new in JAC 0.11</a></h1>
<h2>New aspects</h2>
<dl>
<dt>Distrans</dt><dd>Handles transactional behavior, based on <a href="http://jotm.objectweb.org">JOTM</a></dd>
<dt>Hibernate</dt><dd>A persistence aspect based on <a href="http://hibernate.bluemars.net">Hibernate</a></dd>
</dl>
<h2>GUI</h2>
<ul>
<li>Swing: object's popup menus can be merged into one menu</li>
<li>Swing: mnemonics are automatically generated for menus and
toolbars</li>
<li>Swing: added tooltips</li>
<li>Swing: automatically generate mnemonics for menus and
toolbars</li>
<li>Swing: added "move up" and "move down" buttons for lists</li>
</ul>
<h2>IDE</h2>
<ul>
<li>Methods and fields can be hidden in diagrams</li>
</ul>
<h2>Persistence</h2>
<ul>
<li>Fixed collections preload bug</li>
</ul>
<h1><a name="0.10.2">What's new in JAC 0.10.2</a></h1>
<h2>Core</h2>
<ul>
<li>Overriding methods which call super are detected as
setter/adder/remover</li>
</ul>
<h2>GUI</h2>
<ul>
<li>Method parameters can be declared to be of enum type</li>
<li>Added per class default sort order</li>
<li>Use can choose the class to instantiate when a parameter is
autocreated</li>
<li>Fixed navbar prev/next display bug</li>
</ul>
<h2>IDE</h2>
<ul>
<li>Classes can be abstract</li>
<li>Methods have a visibility and throws exceptions</li>
<li>Added interfaces</li>
<li>Can set trace levels while an application is running</li>
<li>Can set system properties for applications</li>
</ul>
<h1><a name="0.10.1">What's new in JAC 0.10.1</a></h1>
<h2>IDE</h2>
<ul>
<li>Enhanced inheritance links handling in class diagram</li>
<li>Generate correct getter/setter for static fields</li>
<li>Inheritance links can be imported into diagrams</li>
<li>Fixed refresh bugs</li>
</ul>
<h2>Persistence</h2>
<ul>
<li>Fixed bugs in PostgresStorage</li>
</ul>
<h1><a name="0.10">What's new in JAC 0.10</a></h1>
<h2>IDE</h2>
<ul>
<li>Fixed attached text drifting</li>
<li>Fixed "Relation link show tool"</li>
<li>Fixed inheritance link creation in diagram</li>
<li>Initialize getter/setter/adder/remover/clearer with default
name,return type and parameters</li>
<li>gui.acc: Generate setAutoCreate for aggregations</li>
<li>gui.acc: Generate askForParamaters</li>
<li>gui.acc: Generate setParameterNames</li>
<li>Added support for enumerated types</li>
<li>Improved completion performance for method's bodies</li>
<li>Added per class imports and automatically generate imports
for the type of fields</li>
<li>Only show classes of the current project in combo-boxes</li>
<li>Enhanced attached text location (cardinalities and role names)</li>
<li>Created relations are selected</li>
<li>Show adders,setters,etc in methods list (but it does not
refresh correctly)</li>
<li>Handle array types</li>
<li>Use main class instead of just launching code</li>
</ul>
<h2>GUI</h2>
<ul>
<li>Basic reports can be generated with JasperReports</li>
<li>Added first/last buttons on collections (Web)</li>
<li>Added support for contextual settings (� la css)</li>
<li>Added support for custom icons for windows</li>
<li>Embedded methods are supported on the web. Adders of
autocreate collections are embedded into tables.</li>
</ul>
<h2>Core</h2>
<ul>
<li>Attributes are defined persistent in a centralized way</li>
</ul>
<h1><a name="0.9.4">What's new in JAC 0.9.4</a></h1>
<h2>Core</h2>
<ul>
<li>Expression fields can be used in acc configuration
files. For instance, you can use "customer.name" to designated
the name of the customer of an order.</li>
</ul>
<h2>GUI</h2>
<ul>
<li>Web: you can build URLs to display any object you want by
its name</li>
<li>Methods can be dynamically enabled/disabled in swing menus</li>
</ul>
<h2>IDE</h2>
<ul>
<li>Improved java code editor</li>
<li>Improved acc code editor</li>
<li>Generate declareAssociation code for integrity.acc</li>
<li>Generate setNullAllowed code for rtti.acc</li>
<li>Aspect configurations can be reloaded from the IDE</li>
<li>Automatically add an rtti aspect configuration to applications</li>
</ul>
<h1><a name="0.9.3">What's new in JAC 0.9.3</a></h1>
<h2>Integrity aspect</h2>
<ul>
<li>Primary key checking</li>
</ul>
<h2>JAC Core</h2>
<ul>
<li>JAC properties are also read from application descriptors
(.jac files)</li>
</ul>
<h2>Message Queue</h2>
<p>This is a new aspect that provides a simple asynchronous
notification mechanism.</p>
<h2>IDE</h2>
<ul>
<li>Do not display error box if there is no error.</li>
<li>Draw arrows on relations.</li>
<li>Aggregation of relations can be edited.</li>
<li>Added popup menus on diagram.</li>
<li>Show dialog when adding field or method from the
diagram</li>
<li>Methods and fields can now be selected from the diagram</li>
<li>Support static fields and methods</li>
<li>Support default values for fields</li>
<li>Basic support for calculated fields and custom get/set methods</li>
<li>Java source code syntax highlighting</li>
</ul>
<h2>GUI aspect</h2>
<ul>
<li>Tables can be sorted by default.</li>
<li>ComboxBoxes are sorted.</li>
<li>Fixed refresh bug</li>
</ul>
<h2>User aspect</h2>
<ul>
<li>Access rights can be controlled through a callback</li>
</ul>
<h1><a name="0.9.2">What's new in JAC 0.9.2</a></h1>
<h2>IDE</h2>
<p>Fixed generation of relations</p>
<h2>GUI</h2>
<p>Fixed concurrency problems that ocurred on images in the photos
sample</p>
<p>When an object is removed from a collection, its views are removed.</p>
<h1><a name="0.9.1">What's new in JAC 0.9.1</a></h1>
<h2>IDE</h2>
<p>Fixed windows related bugs.</p>
<h2>Docs</h2>
<p>Tutorial updates.</p>
<h1><a name="0.9">What's new in JAC 0.9</a></h1>
<h2>General</h2>
<p>Transformed classes are now cached on the local file system for
faster start-up.</p>
<p>Enhanced bytecode analysis to find out getters,setters,adders
and removers.</p>
<p>Standard java.util collections can now be used.</p>
<p>Added command-line option to set the trace level of a remote
server.</p>
<h2>GUI</h2>
<p>Added menus, trees and tabs to the web gui.</p>
<p>Added "next" and "prev" for collections on the web.</p>
<p>Added toolbars.</p>
<p>Methods can now be displayed in tables.</p>
<p>Added DateHour format for <span class="class">java.util.Date</span></p>
<p>Added Enums</p>
<p>"Next" and "Prev" buttons for object views from a collection.</p>
<p>Format of floats and doubles.</p>
<h2>IDE</h2>
<p>Diagrams are not saved in a file any more. The standard
persistence aspect is used.</p>
<h2>Authentication</h2>
<p>Can select the authenticator (Trusting, System)</p>
<p>Custom access control policies can be implemented.</p>
<h2>User</h2>
<p>This is a new aspect.</p>
<h1><a name="0.8.1">What's new in JAC 0.8.1</a></h1>
<h2>General</h2>
<p>Configuration methods of aspect components are now grouped
in interfaces (such as GuiConf, PersistenceConf) so that it's
easier to find them.</p>
<h2>IDE</h2>
<ul>
<li>Reengineering of the class diagrams</li>
<li>Better consistency between subpanels selections</li>
<li>Compilation errors are shown in a window, and clicking on
them jumps to location of the error (well, almost, there's a
little focus problem)</li>
</ul>
<h2>GUI</h2>
<ul>
<li>Image editors display the image</li>
<li>attributes order can be configured for each collection
(webgui)</li>
<li>save the state of forms (webgui)</li>
<li>TreeView nodes have configurable menus</li>
<li>The TreeView does not show invisible relations</li>
<li>The TreeView automatically selects and expands newly added nodes</li>
<li>TextEditor can have a scroll bar (swing)</li>
<li>Added a configuration method (setOnSelection) to set a
callback that is called when an item of a colleciton is
selected (swing)</li>
</ul>
<h2>DOCUMENTATIONS</h2>
<ul>
<li>Tutorial and Programmer's Guide indexes in frames</li>
<li>Added the IDE howto to the tutorial</li>
</ul>
<h1><a name="0.8">What's new in JAC 0.8</a></h1>
<h2>IDE</h2>
<p>An IDE in a very first beta version is added (not documented
yet). The idea it to allow the programmer to model its
applications in a UML-like formalism. The diagrams editors are
implemented by using the excellent JHotDraw framework.
<p>See the <code>org/objectweb/jac/src/org/objectweb/jac/ide</code> directory of the
distribution (launch with <code>jac ide.jac</code>).
<p>For the moment, the IDE supports (still in a very beta state):
<ul>
<li>Modeling of base programs (classes, relations)</li>
<li>Modeling of aspects (aspect, pointcut links)</li>
<li>Code generation: once modeled, the code can be generated and
compiled</li>
<li>Applications definitions and aspects configuration</li>
</ul>
<h2>Swing GUI</h2>
<ul>
<li>The state of tree views is not lost anymore</li>
<li>fixed lots of bugs (refresh problems and exceptions)</li>
<li>be more clever when wrapping with askForParamaters</li>
<li>columns of table can be configured per collection</li>
<li>Added support for menus (see setMenuBar and addMenuItem in GuiAC)</li>
</ul>
<h2>Web GUI</h2>
<p>Introduced a component architecture similar to the one used for
Swing. See setHTMLTypeViewer and setHTMLTypeEditor of
org.objectweb.jac.aspect.gui.GuiAC.</p>
<h2>Association</h2>
<p>There's a new association aspect. It can be used to
automatically updated opposite roles. See the declareAssociation
of org.objectweb.jac.core.rtti.RttiAC.</p>
<h2>Configuration files</h2>
<ul>
<li>Fixed empty file and missing last ";" bugs</li>
<li>FieldItem can be used in configuration methods.</li>
</ul>
<h2>Windows</h2>
<p>There's now a jac2000.bat for Windows2000 and a jac98.bat for
Windows98.</p>
<h1><a name="0.7">What's new in JAC 0.7</a></h1>
<h2>Configuration files parsing</h2>
<p>Better error reporting : line numbers should be accurate.</p>
<p>The <a href="/doc/aspects_config.html#grouping">syntax for
blocks</a> was improved to allow multiple values.</p>
<p>Multi-line C-style comments are allowed (/* comments
.... */).</p>
<h2>Persistence</h2>
<p>A filesystem storage was implemented. It allows you to store
objects without having to setup a database.</p>
<p>It is no longer necessary to declare wrapped collections in
configuration files.</p>
<h2>Transactions</h2>
<p>There is a new aspect to manage transactions. See the bank
sample application for an example how to use it. It is still
very basic. Expect problems when concurrent transactions
occur for instance (the collections modifications merging is not
implemented yet).</p>
<h2>Synchronization</h2>
<p>Added a simple synchronization aspect.</p>
<h2>GUI</h2>
<p>You can now embbed views in the Swing GUI.</p>
<p>A customized GUI (with up to 4 panels) can easily be created.</p>
<p>Added a tree view.</p>
<p>Better handling of multiple modal boxes.</p>
<p>By default, changes in embedded editor are automatically
updated when the editor losts its focus.</p>
<p>Possiblity to have commit/cancel buttons for view with embedded
editors (when you do not want implicit updates).</p>
<h2>Core</h2>
<p>Garbage collector (not activated for the moment).</p>
<h1><a name="0.6">What's new in JAC 0.6</a></h1>
<h2>Configuration files parsing</h2>
<p>We have changed the syntax of the *.acc files to make it
cleaner (there is now a real parser -- Cup -- with a real grammar
behind). JAC also supports *.xml parsing thanks to Zac's
contribution. For more details, see <a
href="doc/aspects_config.html"> documentation on configuration
syntaxes.</a>
<h2>Application descriptors (*.jac)</h2>
<p>The application and the aspects it contains are not declared
anymore in a launching class but in a JAC application descriptor
(*.jac).
<p>For instance, if you had a calcul application defined as
following:
<pre class=code>
import org.objectweb.jac.core.*;
public class Run {
public static void main( String[] args )
{
Application app = new Application("calcul",null,
"Run",null);
app.addAcConfiguration(
new ACConfiguration( app, "rtti",
"rtti.acc", true ) );
app.addAcConfiguration(
new ACConfiguration( app, "gui",
"gui.acc", true ) );
ApplicationRepository.get().addApplication( app );
Calcul myCalcul = new Calcul();
}
}
</pre>
<p>The new way of defining this is:
<pre class=code>
// calcul.jac file
applicationName: calcul
launchingClass: Run
aspects: \
rtti mydirectory/rtti.acc true \
gui mydirectory/gui.acc true
</pre>
<pre class=code>
public class Run {
public static void main( String[] args ) {
Calcul myCalcul = new Calcul();
}
}
</pre>
<p>Consequently, launching a JAC application have changed to:
<pre class=code>
jac [options] calcul.jac
</pre>
<p>What is interesting about this new feature is that you do
not need to compile again the launching program even when you
want to change the way the application declares its aspects.
<h2>Distribution enhancements</h2>
<p>Distribution is now more flexible since each application can
defines its own topology in the corresponding application
descriptor. For instance:
<pre class=code>
// calcul.jac file
applicationName: calcul
launchingClass: Run
aspects: \
rtti mydirectory/rtti.acc true \
gui mydirectory/gui.acc true \
deployment mydirectory/deployment.acc true
topology: //localhost/s2
</pre>
<p>This means that the <code>org.objectweb.jac.topology</code> property of the
<code>org.objectweb.jac.prop</code> file is not effective anymore.
<p>Furthermore, the application that defines a topology
automatically binds its launching container to the containers of
the topology (creating an aspect-space). This topology can be
dynamically modified if the aspects allow it thanks to a new event
that notifies all the aspects when the topology is changed.
<h2>New launching options</h2>
<pre class=code>
// launches an administration GUI on the container //localhost/s2
jac -A //localhost/s2
// write all the logs (here the gui logs) into a log file
jac -V gui -L org.objectweb.jac.log -G myapp.jac
// the -D option can take a container name as argument (the
// default value is still //localhost/s0
jac -D s3
</pre>
<p>As a consequence of the last improvement of the -D option and
of the distribution enhancement, the -S (slave) option has been
removed.
<h2>GUI</h2>
<p>Some bugs fixed, added embedded editors in a general way.
<p>Auto-creation configuration methods added (See
org.objectweb.jac.aspects.gui.GuiAC), available on the WEB or for Swing).
<h1><a name="0.5.2">What's new in JAC 0.5.2</a></h1>
<h2>Fixings</h2>
<p>It appeared that JAC 0.5.1 had several bugs in the GUI and the
distribution. Most of them should be fixed.
<h2>GUI</h2>
<p>Multi-line text editor added in the GUI.
<p>We also added a WEB GUI sample reachable from the WEB on the
8081 port:
<a
href="http://org.objectweb.jac.aopsys.com:8081/org/objectweb/jac/servlet/JacServlet?action=view&jid=photorepository0">Live
demo of the photos sample (still unstable)</a>.
<h2>Distribution</h2>
<p>A remote access aspect
(org.objectweb.jac.aspects.distribution.RemoteAccessAC) allows JAC clients to
seamlessly access JAC servers.
<h2>Samples</h2>
<p>A simple but full application added. See the
org.objectweb.jac.samples.contacts package.
<p>It is an application that defines its own SWING GUI. It can be
very useful to refer to it since several used features are
not yet documented in the tutorial.
<p>It can also be launched in a server mode:
<pre class=code>
jac -D org.objectweb.jac.samples.contacts.Run serverMode
</pre>
<p>And in a client mode that uses the data of the launched server
instead of local objects (this is a demo on how to use the
remote access aspect).
<pre class=code>
jac org.objectweb.jac.samples.contacts.Run clientMode
</pre>
<h1><a name="0.5.1">What's new in JAC 0.5.1</a></h1>
<h2>Configuration files</h2>
<p>Error messages for configuration files should now make more sense. </p>
<p>Quoting values in configuration files is not mandatory any more,
and you can declare configuration methods with parameters of type
double, int, long, float, boolean, short, Class, ClassItem and
AbstractMethodItem.</p>
<h2>Pointcuts</h2>
<p>Pointcuts were enhanced to support path expressions. This new
feature is called an OPath and is widely inspired from
XPath... For instance, if you have the following program:</p>
<pre class=code>
class Bank {
Vector accounts; // Account instances
....
}
class Account {
Vector owners; // Person instances
....
}
class Person {
...
}
</pre>
<p>Imagine you do not know the names of the accounts or persons
objects but that you want to apply an aspect (e.g. a debugging
aspect) to the accounts that belong to a bank called
"bank0". Then, in the object expression of the pointcut
definition, you simply write:</p>
<pre class=code>
bank0/accounts/.*
Same if you need to denote all the persons that owns an account in "bank0":
bank0/accounts/.*/owners/.*
This is powerful. Each path element is a regular expression. Thus, if
you want to get all the objects related to "bank0" by any relation:
bank0/.*/.*
</pre>
<p>See <a href="doc/programmer_guide.html">
the JAC programmer's guide for more details.</a>
<h2>GUI aspect</h2>
<p>It is now easier to add custom editors and viewers for new
types of values. See GuiAC.setTypeViewer and
GuiAC.setTypeEditor.</p>
<p>Introduced currency handling. You can declare a default
currency and secondary currencies with their change rate. Then
if you declare an attibute to be of type "currency" (see
RttiAC.setFieldType) it's editor will allow you to enter the
value in one a the declared currencies and will do the
conversion. See GuiAC.setDefaultCurrency and
GuiAC.declareCurrency.</p>
<p>The format to be used for dates can be set once for all (see
GuiAC.setDateFormat). It is use by the date viewer and the date
editor for more consistency.</p>
<p>Tables are refreshed (more or less :-).</p>
<p>The layout of swing components is tighter so views take less
room.</p>
<p>And the usual bunch of bug fixes.</p>
<h1><a name="0.5">What's new in JAC 0.5</h1>
<p><em>First, considering several remarks, we have decided to now
furnish JAC under the LGPL. This clarifies the fact that, for
us, all the developped aspects and application classes that run
with JAC are NOT submitted to the license. Of course,
modifications of the JAC system classes or of the furnished
aspects a subject to the LGPL.</em></p>
<h2>Big changes in distribution</h2>
<p>The distribution aspect has been removed and replaced by a set
of useful aspects to perform distribution (all these aspects are
still in the distribution package):</p>
<p>The core aspect for ditribution is DeploymentAC. It allows the
user to easily define various deployment schemes by defining
deployment rules (see DeploymentRule) on the objects of the
application.</p>
<p>Here is a sample deployment configuration:</p>
<pre class=code>
// deploys 4 instances of Calcul on a remote JAC server
// called //oil/s3
deploy "calcul[1-3]" "//oil/s3"
// replicates calcul0 on all the hosts of the topology
replicate "calcul0" ".*"
// create remote access stubs for calcul2 on all the hosts
// of the topology
createStubsFor "calcul2" "//oil/s3" ".*"
</pre>
<p>Note that, to be accessible, the JAC servers must be declared
in the org.objectweb.jac.prop of the application by defining the org.objectweb.jac.topology
property.</p>
<p>Other aspects enables the programmer to install various
protocols once the objects are deployed on a topology (the
deployment aspect is always applied first).</p>
<ul>
<li>the consistency aspect (ConsistencyAC): if several objects
of the same name are deployed on several hosts of the
topology, they can be regarded as replicas and made consistent
with various protocols</li>
<li>the broadcasting aspect (BroadcastingAC): allows the user to
define a broadcasted object on a given host that will
broadcast all the recieved calls to a set of remote objects
(of the same name)</li>
<li>the load-balancing aspect (LoadBalancingAC): quite the same
principles as the broadcasting but the load-balancer only
picks up one remote object that is different for each
invocation (then, if sevral clients use the object, the load
is statistically equally distributed over the set of remote
hosts).</li>
</ul>
<p>Other useful aspects will be provided in next release (and
these ones will be enhanced).</p>
<h2>Other new feature</h2>
<p>The aspect configurations are fetched from the JAC server that
is the class repository (note: the classes are fetched from it
so that the .class files of the application do not have to be
installed on the remote hosts).</p>
<p>Hence, the aspect configurations are consistent all over the
topology and you do not need to deploy them.</p>
<h2>Pointcut expressions enhanced!</h2>
<p>A pointcut expression defines a set of base objects and methods
that need to be wrapped by a given wrapping method.</p>
<p>In JAC 0.4.3, these expressions where standard regular
expressions that were quite uneasy to write and read. We have
changed this.</p>
<p>A pointcut expression is still based on regular expressions but
you can compose them with the && (logical and), || (logical or),
and the ! (NOT) operators. Moreover, you can use keywords in
the expressions so that it is most of the time very easy to
denote a set of methods. Some small examples are better than a
long description of the syntax. So, let's give some
configuration example of the tracing aspect that uses pointcut
expression as an input for the "trace" configuration method:</p>
<pre class=code>
// traces all the calls on all the objects of the system
trace ".*" ".*" ".*"
</pre>
<p>OR:</p>
<pre class=code>
trace "ALL" "ALL" "ALL"
// traces all the calls on all the methods of all the instances of
// classes A and B
trace ".*" "A || B" ".*"
// traces all the calls on all the methods of the first instances
// of classes A and B (their names ends with 0)
trace ".*0" "A || B" ".*"
// restricts the trace to the f field setters and the f field
// getter
trace ".*0" "A || B" "GETTER(f) || SETTER(f)"
// restricts the trace to all the methods minus the methods that
// modify the state of the instances
trace ".*0" "A || B" ".* && !MODIFIERS"
// traces all the instances of all classes except a0 and only the
// methods that read the state of the instances or the getName
// method
trace ".* && !a0" ".*" "ACCESSORS || getName():String"
</pre>
<p>Note: the GETTER, SETTER, MODIFIERS and ACCESSORS keywords are
using the naming conventions and the RTTI aspect to resolve the
actual methods.</p>
<h2>Performance improved</h2>
<p>Jac should now be faster to load, and invocation of wrapped
methods is also much faster.</p>
<h2>GUI aspect</h2>
<p>The Gui aspect was sligthly improved. Editor components now get
the focus so that you do not have to click on them in order to
start entering values.</p>
<p>New configuration methods captureSystemOut and captureSystemErr
to control wether stdout and stderr are captured and redirected
into a tab of the GUI.</p>
<p>The Swing GUI now use sessions so that for instance, you do not
have to enter your username and password each time you invoke a
method restricted by the authentication aspect.</p>
<p>ComboBoxes can now be editable (see
<code>GuiAC.setFieldChoice</code> and
<code>GuiAC.setMethodDynamicParameterChoice</code>). Also, items
are sorted.</p>
<p>The trace editor now accepts regular expressions in put(). For
instance, <code>put("gui.*",1)</code> enables all trace
categories starting with "gui".</p>
<p>InputCanceledExceptions are now silently discarded.</p>
<h2>Session aspect</h2>
<p>It is now configurable; you can specify which attributes must
be saved and restored (See
<code>SessionAC.declareStoredAttributes</code>).</p>
</body>
</html>