Thinking in Patterns chapter 4: Object quantity

Thinking in Patterns with Java V0.9: chapter 4: Object quantity: TIPatterns.htm#_Toc41169694

1, The sections name of today's learning;

Singleton. 25

  Exercises. 27

Object pool 27

  Exercises

 

2, What is it talk about in these sections and my comments and feeling for the content;

   1), Singleton just like youself, only one, can't be duplicated, this can be used in a stiuation that only one object of this class can be created.

   Bruce speaks a lot about avoiding the singleton object to be duplicated by a new() method or clone() method. He puts up with these ways:

   1>, "make all constructors private, and you must create at least one constructor";

   2>, preventing to be cloned: 

   "making the class final prevents cloning";

   "if you’re inheriting from a class hierarchy that has already overridden clone( ) as public and implemented Cloneable, the way to prevent cloning is to override clone( ) and throw a CloneNotSupportedException as described in Appendix A of Thinking in Java, 2nd edition."

   2), Object pool is only limited quantity object can be created. The quantity of objects in pool will reduce one if use one, the object pool will empty if all the objects are used, unless someone return to unused state.

   A question: if the objects in pool will be destroyed in a fixed period regardless of their states is used or unused, how can I use the object at anytime? Some virtual host provider will clear database connections in this way. My anwser is: Before getting connection from pool, check if there are some objects in the pool, if no any object in pool, then call pool manager to create these limited quantity objects again. 

3, My questions about the program itself;

   1), How JVM works when create a object with class's private constructor?

   2), How to use method clone()?

   3), Static inner class

   4), a class can be singleton by make all the method static

   5), Every chapter's exercises will not to be done this time's reading. 

4, My questions about the english language;

  1), Strange words:

  synthesizing

                                           incomplete

Thinking in Patterns chapter 3: Simplifying Idioms

Thinking in Patterns with Java V0.9: chapter 3: Simplifying Idioms: TIPatterns.htm#_Toc41169691

1, Sections name of today's learning;

    Messenger. 22

    Collecting Parameter. 24

2, What is it talk about in these sections and my comments and feeling for the content:

  Bruce's book always give me good reading experiment.

  He puts the Messenger and Collecting parameter at Simplifying Idioms

chapter, I think the reason is that these two patterns can be used in the basis implementation of a process which performing a specific task.

  1), Messenger.

  If we need translate many related parameters into a method, we can package

these parameters into an object, then we can translate this object into that method instead.

  I think I can use this Messenger pattern in our LearnDiary Open Source

Project like this: Because we use Struts framework, it need tranlate some

attributes from a Struts Action into a Jsp page, my method before is set these

attributes into request scope seperately, then get these attributes in Jsp

page seperately; Now, if some of these attributes is related, we can package some of these attributes into an attribute object, then translate this packaged attribute object into Jsp page. But, I think this need balance, we can't package all the attributes into only an attribute object without any proper reason.

  2), Collecting Parameter.

  Frankly speaking, I have never used Collecting Parameter patterns before, I

haven't ever thought that a parameter can be used like this: pass a parameter

into a method, let this method do some change on this parameter, then pass

this changed parameter into another method, and let this another method do

some change on this changed parameter again, and so on. That's really an

intresting use of a parameter. Just like flow line production:). But,

remember, the parameter is always only one same object, only the content of

this object changed. 

  Let me think a while, how can I use this pattern into our LearnDiary

project? aha, a little example coming, in our project, there is an Email

object, it consists of email address and title, content, and so on. Email

address can be gotten from user object, and email's title and content can be

gotten from an article object. So, create method at user and article object

for adding some field into email object. Then, translate email object into

user and article object's corresponding method to do some change in turn.  

 

3, My questions about the english language;

  1), Strange words:

  trivial, pass around, magnitude, dummy, pollen, accumulating

Thinking in Patterns Chapter 1: introduction

Thinking in Patterns with Java V0.9:  Chapter 1: introduction: TIPatterns.htm#_Toc41169679

1, The sections name of today's learning;

    The Y2K syndrome. 11

    Context and composition. 12

    A word about checked exceptions  13 

2, What is it talk about in these sections?

   Even my english is poor, but in order to learn it, I will write some my viewpoints of the content. After finishing read this book once, and to see a chinese version of this book, maybe I will rewrite some words at here.

   First, I am amused the term GoF is conerned with that well-known four persons in China include JiangQing, WangHongWen, etc..

  The first part tells us, you must have learned some basic OOP and have used Java some time, then you can read this book, it isn't for a beginer of Java or program.

  In section The Y2K syndrome, it tells us, focus on the key that is really the bottleneck of system, usually, only 10% code is this key, don't perform some optimization according to your own thinking without deeply testing. I think Bruce put these words at this location of this book, the meaning maybe is Design Patterns can be used at the key part of system(only 10%), for non-key part, you don't think the Design Patterns should be used everywhere.

  Bruce introduces two terms which is Context and composition, maybe he thought these two terms is very important in the Design Patterns? Because I haven't read some basic knowledge about Design Patterns, so I can't understand these two terms well. But I should remeber these words: "The context object allows you to use the pattern in a composition, and that may be it’s primary value.". Maybe I can understand these after reading this book.

  In fact, I don't think Bruce should put the content about "checked exceptions" at here, to Design Patterns, how important the "checked exceptins" is? In these part, I know Bruce discontented the "checked exceptions" in C++ and Java except Python. This part I can't understand it well, but I can get one is: "I intend to put a lot more RuntimeExceptions into my Java code".

  

3, My comments and feeling for the content?

  no.

4, My questions about the program itself;

  1), What on earth is Context object in the Design Patterns ?

5, My questions about the english language;

  1), Strange words:

  evolve, rudimentary, syndrome, subtitle, pitfall, terms, as far as, predicting doom, as if, premature, virtually, happen, particular, facade, knowledge, silly, past, dominate, landscape, turn around, intrude, go up, vanish, ream, opposite, tongue-in-cheek, widow, demonize, chronicle

  2), Strange sentences:

  Y2K syndrome:

  1>, Also,everyone seems to reserve in their own mind a special case ?except for this thing that I happen to know is a particular problem.?

  2>, these things aren?t so difficult after all, if I can see such an obvious problem.

  3>,  As a result, I know that many

embedded systems have no idea what the date or time is, and even if they do

that data often isn?t used in any important calculations. And yet I was told in

no uncertain terms that all the embedded systems were going to crash on January

1, 2000. As far as I can tell the only memory that was lost on that particular

date was that of the people who were predicting doom ? it?s as if they had

never said any of that stuff.

  4>, ?We should forget about small efficiencies, say about 97% of the time:

Premature optimization is the root of all evil.??Donald Knuth

  5>, My experience with Python exceptions supports this, and unless I get turned around on this issue I intend to put a lot more RuntimeExceptions into my Java code.

                                           incomplete

Outline of Thinking in Patterns with Java

Today, I found it can't sperate chapters in w3m brower in text mode of Linux. So, copy the Contents section at here, and seperate chapters by indenting the character. It hasn't indented After the line consist of "*".

Contents

Preface  8

Introduction  11

    The Y2K syndrome. 11

    Context and composition. 12

    A word about checked exceptions  13

The pattern concept 15

    What is a pattern?. 15

    Pattern taxonomy. 17

    Design principles. 18

    Classifying patterns. 19

    The development challenge. 21

    Unit testing. 21

        Location of test code. 22

Simplifying Idioms  22

    Messenger. 22

    Collecting Parameter. 24

Object quantity  25

    Singleton. 25

        Exercises. 27

    Object pool 27

        Exercises. 30

Object decoupling  30

    Proxy: fronting for another object 31

        The PoolManager using Proxy. 33

        Dynamic Proxies. 36

    State: changing object behavior  38

    Iterators: decoupling algorithms from containers  44

        Type-safe iterators. 45

    Exercises. 46

Factoring commonality  47

    Strategy: choosing the algorithm at run-time  48

    Policy: generalized strategy. 50

    Template method. 50

        Exercises. 52

Encapsulating creation  52

  Simple Factory method. 53

  Polymorphic factories. 55

  Abstract factories. 58

  Exercises. 61

Specialized creation  61

  Prototype. 61

  Builder. 62

  Exercises. 66

Too many  66

  Flyweight: too many objects. 66

  Decorator: too many classes. 69

    Basic decorator structure. 70

    A coffee example. 70

    Class for each combination. 70

    The decorator approach. 73

    Compromise. 78

    Other considerations. 82

    Exercises. 83

Connecting different types  84

  Adapter. 84

  Bridge. 87

  Exercises. 93

Flexible structure  93

  Composite. 93

System decoupling  95

  Observer. 95

    Observing flowers. 97

    A visual example of observers. 101

  Mediator. 103

  Exercises. 104

Reducing interface complexity  104

  Façade. 105

    Package as a variation of Façade  106

Algorithmic partitioning  106

  Command: choosing the operation at run-time  106

    Exercises. 109

  Chain of responsibility. 109

    Exercises. 112

*******************************************************************************************************

Externalizing object state  113

Memento. 113

Complex interactions  114

Multiple dispatching. 114

Visitor, a type of multiple dispatching  117

Exercises. 119

Multiple languages  120

Interpreter motivation. 121

Python overview.. 122

Built-in containers. 123

Functions. 124

Strings. 125

Classes. 127

Creating a language. 130

Controlling the interpreter. 134

Putting data in. 134

Getting data out. 140

Multiple interpreters. 143

Controlling Java from Jython  144

Inner Classes. 148

Using Java libraries. 148

Inheriting from Java library classes  150

Creating Java classes with Jython  151

Building the Java classes from the Python code  156

The Java-Python Extension (JPE)  157

Summary. 157

Exercises. 158

Complex system states  159

StateMachine. 159

Exercises. 169

Table-Driven State Machine. 169

The State class. 171

Conditions for transition. 172

Transition actions. 172

The table. 172

The basic machine. 173

Simple vending machine. 174

Testing the machine. 179

Tools. 180

Table-driven code: configuration flexibility  180

Table-driven code using anonymous inner classes  180

Exercises. 180

Pattern refactoring  181

Simulating the trash recycler. 182

Improving the design. 186

“Make more objects”. 186

A pattern for prototyping creation  189

Trash subclasses. 193

Parsing Trash from an external file  195

Recycling with prototyping. 198

Abstracting usage. 199

Multiple dispatching. 203

Implementing the double dispatch   204

The Visitor pattern. 211

A Reflective Decorator. 214

More coupling?. 219

RTTI considered harmful?. 220

Summary. 223

Exercises. 224

Projects  225

Rats & Mazes. 225

Other maze resources. 230

XML Decorator. 230

A: Tools  230

Ant extensions. 231

Array utilities. 232

Download this book at: http://www.mindviewinc.com/downloads/TIPatterns-0.9.zip

Thinking in Patterns Chapter 2: The pattern concept

Thinking in Patterns with Java V0.9:  Chapter 2: The pattern concept: TIPatterns.htm#_Toc41169683

1, The sections name of today's learning;

    What is a pattern?. 15

    Pattern taxonomy. 17

    Design principles. 18

    Classifying patterns. 19

    The development challenge. 21

    Unit testing. 21

        Location of test code. 22

 

2, What is it talk about in these sections and my comments and feeling for the content;

  At first, Bruce introduce the famous GoF's Design Patterns which show 23 design patterns, the very good aspect in that book is: it shows a evolution process by a given example, tracking this example's step, we can see how the design patterns be applied in an application.

  1), In the section What is a pattern, Bruce gives us a definition of pattern in a wider area.

  He tells us, Pattern is the general good way for resolving a class of problems, and this way has used by many times.

  Design Patterns isn't only tied with design phase, sometimes it appears in analysis, or implementation phase.

  The concept of Design Patterns is also proper for designing program, the same concept is "separate things that change from things that stay the same".

  Again, Bruce put up with his viewpoint of the little part of a system cost the most resource. He calls this as "the vector of change." My understanding is: from the math's aspect, suppose Y=kX, if "k" is very big, then X plus a little, but Y will plus a lot. So we should use our Design patterns around these most import but with less code's part of the system.

  In the rest part of this section, Bruce tells us the goal of using Design Patterns is "to isolate changes in your code", from this pointview, "inheritance", "compostion", "iterator", these terms in the program which we have used before, all these can be a kind of "Design Pattern".

  2), Section Pattern taxonomy.

  According the degree of using pattern in a system, the ablility of reusing the design, Bruce put up with his categories in this aspect. From the less reusing to the most reusing, it is: Idiom, Specific Design, Standard Design, Design Pattern.

  3), Design principles.

  I think, every principle here can be extend to be a chapter, and this section can be written to a book. Because the less programing experience of mine, I can't understand some principle here, especially like: Principle of least astonishment (don’t be astonishing); Make common things easy, and rare things possible; Law of Demeter; Once and once only.

  I can't write anymore in this section, maybe it need me to add a new goal called: understand Bruce's Design principles:)

  4), Classifying patterns.

  The 23 patterns in Design Patterns written by C++ or smalltalk are classified into three purpose: Creational, Structural, Behavioral. Bruce will revisit these 23 patterns with Java. And put up with his own examples about it. I always like the examples in Thinking in Java. So I think I will get surprised in this book's examples too.

  With Bruce's own mind of classifying all these 23 patterns, he put up with two kinds of classifying methods, and all these two methods are different from GoF's.

  The first method is according to the structure of implementations. At last, Bruce chose the second method:  according to "the problems they solve". So, this will be a practical and very useful book. I like Bruce's choice:) I think if I meet some kind of design problem, I can find a proper patterns in term of the problem's class.

 

  5), The development challenge

  I don't understand what is Bruce talking about in this section, he give some development methods and some internet resource. These terms is concerned with Design Patterns? I don't know.

  6), Unit testing

  In this section, I can know, at first, Bruce use his own testing framework, later, Junit get well, so he simply recommend the defacto standard-Junit. Bruce says he don’t know how much influence he may have had on Junit's change. I think Bruce is proud for his unit testing framework in his early book of Thinking in Patterns 

If I haven't misunderstood this section's words:) He is a frank man, I think.

 

4, My questions about the program itself;

  1), Most of Section Design principles I can't undersand well. I know this is copied from Thinking in Java Edition 2, but I haven't understood these then. Maybe, seeing the translation of HouJie's can help me to understand these?

 

5, My questions about the english language;

  1), Strange words:

ibid, whet, mandatory, vocabulary, adequate, flexible, insightful, work out,

completeness, embody, realm, gradient, put another way, focal, taxonomy,

pollution, synonymous with, succession, perspective, turn out,  proposed,

astonishment, astonishing, pile onto, demeter, Subtraction, dizzying, quest,

quantity, chapter, indent, intent, accidental, Variation, complement, aforementioned,

orientation, illuminating, decent, occur to, other than, in favor of, definitely

maxim, maxim, little-known, recommend, defacto, adequate, not yet, strip out

  2), Strange sentences:

  1>, This should whet your appetite to read Design Patterns by Gamma, et.

al., a source of what has now become an essential, almost mandatory, vocabulary

for OOP programmers.

  2>, Here, ?vector? refers to the maximum gradient and not a container class.

  3>, One of the events that?s occurred with the rise of design patterns is

what could be thought of as the ?pollution? of the term ? people have begun to

use the term to mean just about anything synonymous with ?good.?   

  4>, So, this principle acts as the tie breaker between otherwise equally viable design alternatives.

  5>, I believe this is a subtle but important distinction from the way Metsker organizes the patterns by intent in Design Patterns Java Workshop (Addison-Wesley 2002), because I hope that you will then be able to recognize your problem and search for a solution, if the patterns are organized this way.

  6>, When you download the code for this book, you will find (4/9/2003: Eventually, not yet) unit tests along with the code examples whenever possible.

                                           incomplete

Thinking in Patterns: Preface

Thinking in Patterns with Java V0.9: Preface: TIPatterns.htm#_Toc41169678

 1, The sections name of today's learning:

   Section: Preface

                              

 2, What is it talk about in this section?  

    This section is short, but it isn't no important. It tells us:

    1), this book come from Bruce sir and his friend's many years' experience.

    2), Bruce sir and his friend has a really good paterner relationship, they are really friend with same interesting.

    3), Bruce is focusing on Python now, but this book isn't stop writing.

 3, My comments and feeling for the content?                            

    Although this book written at 2003, and only version 0.9 now. I still want learn it, because I have read Thinking in Java, another book of his.

    I found I like his writing fashion, and all in the book reflect Bruce's wisdom, track the path he give us, I can learn Java with good interesting and well understanding. I haven't to do some more choice in learning books. Because I know I can get many from this book. Bruce has much experience in C++, JAVA, Python, OOP. So I think his Thinking in Patterns is must a good one, in the other words, must not a bad one.

    Bruce and his friend has a good friendship, this make them work happy together. They have good enviriment for their reseach.

 

 4, My questions about the program itself:

   no.                             

 5, My questions about the english language:      

   Too many, like below:

   Strange words:

   given the seminar, urge, pondering, appreciation, superb

   Strange sentence:

   I find this prospect to be much more exciting than the idea of struggling through another language tutorial.

准备用英文版的Thinking in Patterns学习设计模式

今天,正式把这本电子书的快捷方式放在桌面上,另外,下载安装了firefox的划词翻译插件:DictCN 2.2,用来翻译生词。

现在,网上已经有了这本电子书的中文版,但我还是想看英文版,因为想一举两得,既学了设计模式,又学了英语。我会把学习过程中碰到的包括语言在内的问题记下来。

现在,单位的事情不多,可以用这个时间认真学习一下设计模式。不过,单位的机器已经失盗,自己的那台老古董装的是文本模式的redhat linux 9.0,有空的时候在上面看看文章和网页还行,可就是碰到生词没有办法划词翻译。有点不爽。但是也只有将就了。

路还是要走的,不能因为怕走错路就一直呆在原地不动。学设计模式,开始吧。

Apollo for Eclipse 1.0 Released(Eclipse的UML建模插件)(转)

转自: Gentleware Newsletter(因为他们的产品起源于ArgoUML,所以我对他们有些关注,也可以练习英语:))

这封邮件讲的是Gentleware公司的Eclipse的UML建模插件Apollo正式版发布。

有几个新闻点可以注意一下:

1、有30天的免费试用期

2、他们加入了Eclipse基金会

3、有无版权限制的版本提供,但是没有模型输出选项

4、Poseidon for UML Version 5 在年底前发行

邮件正文:

 Gentleware Newsletter

Some spam filters and email servers may block all or part of newsletters or may require sender verification. To be sure that you receive the complete newsletter with no delay, please add the email address 'newsletter@gentleware.com' to your address book.

 

Apollo for Eclipse 1.0 Released

Dear Poseidon User,

It's a new age here at Gentleware, and this is the very last newsletter that will be addressed only to Poseidon users, lest we leave out our dear new Apollo users. That's right, the wait is over... Apollo for Eclipse, the newest modeling tool from Gentleware, has been launched!

Read on to find out more...

»  Apollo 1.0 ==>

»  Free 30-Day Trial =>

»  New Licensing =>

»  Eclipse Foundation =>

»  Poseidon 5.0 =>

http://www.gentleware.com/

Design element: 4 blue boxes

 

Apollo for Eclipse 1.0 - Official Release

Apollo for Eclipse is a modeling tool for programmers and developers who want to flexibly combine the advantages of visual modeling using UML with Java programming. Fully synchronized roundtrip engineering employs the latest releases of UML 2.1 and Java 5 to provide an instant visualization of any existing Java code through UML class diagrams, and likewise propagate changes to the UML model throughout the code.

The tool fully integrates into the Eclipse environment, which makes it easy for developers to view code as models, and vice versa.

Features include:

    * Forward, reverse, and roundtrip engineering

    * Support for Java 5

    * Support for UML 2.1

    * Superior class diagram handling

    * Available as a stand-alone Rich Client Platform or as an extension to Eclipse

»  Download Apollo for Eclipse version 1.0 =>

Design element: 4 blue boxes

 

Apollo for Eclipse 30 Day Trial - No Obligation

Try all of the features of Apollo for Eclipse free for 30 days. Sign up for a our special Trial Package, you can cancel completely cost-free and obligation-free at any time during the first 30 days. More information is available from our website.

»  Read details of the trial offer =>

Design element: 4 blue boxes

 

New Licensing Structure

Apollo for Eclipse licenses are available to rent, much like web services. You can rent a license for a single period or on a continuing subscription basis. This licensing model allows professional organizations to deploy Apollo for Eclipse as they need to, and for a lower cost.

An unlicensed version of Apollo for Eclipse is also available, just download and start working. Export options are disabled in the unlicensed version.

This licensing structure will apply to the Community Edition of Poseidon for UML, beginning with the release of version 5.

»  Find out more about Apollo for Eclipse licensing =>

Design element: 4 blue boxes

 

Gentleware Joins Eclipse Foundation

Gentleware has selected the Eclipse IDE for both in-house development and as a platform for Apollo for Eclipse and future products. To support this effort, Gentleware has joined the Eclipse Foundation as an Add-In provider.

»  Read more about Gentleware in the Eclipse Foundation =>

Design element: 4 blue boxes

 

Poseidon for UML Version 5 - Coming Soon

The addition of Apollo for Eclipse to the offerings of Gentleware doesn't mean the end of Poseidon for UML. A new major release of Poseidon for UML is coming before the end of the year, so keep watching for upcoming announcements.

Design element: 4 blue boxes

 

Best regards,

Marko Boger

CEO

Gentleware Logo

 

Design element: 4 blue boxes

Contact   Terms of Use   Privacy Policy

© 2000-2006 by Gentleware AG

If you no longer wish to receive these emails, please reply to this message with "Unsubscribe" in the subject line or simply click on the following link: Unsubscribe

Gentleware AG

Ludwigstrasse 12

20357 Hamburg

Germany

Read the VerticalResponse marketing policy.

也许我应该学习设计模式了

接触JAVA也有3年了吧,到现在还没有去看一看J2EE设计模式,别说J2EE设计模式,就是模式也没看,Bruce先生写了一本Thinking in Patterns(他也是经典的Thinking in java的作者),一直想看看,也没有时间去看。

今天早上,醒来睡不着了,在网上浏览看了一篇讲ebay的系统中如何借助了J2EE设计模式的好处,觉得自己真该去掌握一下。有机会,有时间的话,可以把这些设计模式看看。

一天十亿次的访问-eBay架构(原文地,不过其中的构架描述没有图片)

1、http://blog.csdn.net/yzhz/archive/2005/01/10/247116.aspx

2、http://blog.csdn.net/yzhz/archive/2005/01/10/247127.aspx

3、http://blog.csdn.net/yzhz/archive/2005/01/10/247133.aspx

4、http://blog.csdn.net/yzhz/archive/2005/01/10/247140.aspx

转载地(构架描述有图片)

http://www.zahui.com/html/6/41654.htm

一封来自Gentleware的CEO的信

Gentleware的Poseidon for UML建模工具起源于开源UML建模工具:ArgoUML0.9。现在的Gentleware公司的CEO就是ArgoUML的项目拥有者之一:Marko Boger。你可以在ArgoUML的主页上看到。

从下面这封信中,我感到了起源于开源软件的商业软件的强大活力(他也提供共享版本,不过功能很受限,可以作为学习之用);反之,看他的开源前辈ArgoUML,可以说是鲜有使用者,也许在我不了解其中具体情况下下一个不成熟的结论:半死不活。

这是为什么?难道ArgoUML终究不能成为一个像其他开源工具如:ant、eclispe、Tomcat、Linux等一样的流行工具?难道说ArgoUML的存在就是因为有了它的商业分支版本"Poseidon for UML"? 难道ArgoUML就是”认知建模“的一个试验品(它的认知建模好像是可以智能的分析模型的合理程度,还可以根据知识库纠正一些问题或提出建议)?在我用来,它的认知建模好像没有多大用处(起源于它的Poseidon for UML就去掉了这个特性)。搞不懂,不过对我这个UML的学习者来说,用ArgoUML来画画图,理理思路还是够用了。

从下面这封订阅来自Poseidon for UML的信中可以大概知道:

1、它要发集成在eclipse中的Apollo for Eclipse建模插件了;

2、对于发行采用基于Web Service模型的新许可形式了,购买、延续、改变许可将更加自动化;

3、Apollo for Eclipse和 Poseidon for UML同时存在,定位不同,且都有供学习用的共享版本。

下面是这封电子邮件的原文,可以以此来看软件业的趋势、开源软件的命运和运作,以及这些给普通软件用户带来的影响。

××××××××××××××××××××××××××××××××××××××××××××××××××

A Letter to You: From Gentleware's CEO

Dear Loyal Poseidon User,

With this letter, I'd like to inform you about a series of major events and changes that will be occurring in the next few months. Please bear with me; I am certain that you will find this message to be worthwhile reading. You are part of the cherished user base that Gentleware has built up over the past 6 years. As such, you are one of the first to be informed.

We are proud and honored to have such a large and loyal audience, and we have been working extremely hard to fulfill your expectations. Our user community has grown so much that the range of users now extends beyond the scope of our previous tool lineup, and the range of expectations has correspondingly grown. Many users, especially those working in the later development phases who want to review and modify models and code simultaneously, expressed the need for a tight integration into Eclipse. Poseidon for UML is built on Swing while Eclipse is built in SWT, so an integration can only go so far. For a clean integration we had to start from scratch. And so we did.

   

   

Apollo for Eclipse

We are pleased to present our newest tool, Apollo for Eclipse, which will be released in the coming weeks.

Built from the ground up as an extension to Eclipse, Apollo for Eclipse makes use of all of the relevant modules from the Eclipse Modeling Project. Most notably, it uses EMF (Eclipse Modeling Framework) and its instantiation for UML, the UML2 project, as a repository. This provides a standard API and saving format and makes it easy to connect other tools like generators or transformation engines to it.

It is our understanding that this is the first professional modeling tool built using GMF. GMF is a framework to create graphical editors in Eclipse and was released just this summer. We regard it as the best technology available to build modeling tools. It provides a standardized yet adaptable user interface that is well adapted to Eclipse, and it provides us with great flexibility to quickly create editors for standard or domain specific notations.

With the initial release of Apollo for Eclipse, we have focused specifically on the class diagram and a clean, robust, and scalable roundtrip mechanism for Java 5 and UML 2.1. More details will be forthcoming in the next newsletter.

   

   

Poseidon for UML

This isn't to say that Poseidon for UML is going away. Poseidon for UML continues to be the best option on the market for analysts and designers who don't work as extensively with Eclipse. In just a short while, we will be bringing out version 5.0 of Poseidon for UML. As with every release, it has a number of important and interesting updates. But I have to say that this release is really special to me. I feel that after 6 years of development we have now reached what we initially started our quest for: namely, to provide the most usable UML modeling tool available. We will provide you with the specific details of the release in a separate newsletter.

   

   

New Licensing Based on the Web Service Model

The software industry is fast paced and changes quickly. With the ubiquity of the internet and with flexible download and update mechanisms provided by the Eclipse platform, software products today have much of the character of a web service. In response, we have adapted our pricing model to reflect this. We have worked hard to find a model that suits the wide variety of our users, from students with minimal budgets, to occasional users with high demands, and on to large corporations with long-term usage scenarios.

We are introducing a rental and subscription model for our new product, which may be familiar to you from other Internet services. Base functionality of the tool is available for free; extended functionality including all exporting capabilities requires a license.

This rental and subscription license model will apply to the Apollo for Eclipse product. Likewise, we will implement it for the Poseidon for UML Community Edition starting with the release of version 5.0. This solution eliminates the conflicts many users have had with our current license terms, which restricts how the Community Edition may be used through the stated condition, "free for non-commercial use".

The Community Edition was originally intended to be a learning tool for those just starting out in UML. It has become an important tool for analysts and designers who depend on Poseidon for UML to communicate with various stakeholders throughout the development lifecycle. The new licensing agreement now allows these users to take advantage of the many powerful features of Poseidon for UML for the nominal charge of only 5 Euros per month.

The unregistered version of the Poseidon for UML Community Edition can still be used for learning UML; all of the features needed to work alongside a textbook or tutorial remain available. Users can open and edit models to explore code and diagrams, but all export features such as saving, copying to the Windows clipboard, and printing are only available in the registered version.

   

   

Options

The first option is to rent a license for a fixed period of time; specifically, for a month, a quarter, or a year. The fee for one month is 5 EUR or 6 USD, longer periods are further discounted. You always maintain the option, but are not obligated, to renew the license after it expires.

The alternative option is to subscribe to the service and thus be assured of continuous access to the most current version. Updates and registration are automatically conducted as soon as you are online. You can decide on the automatically-renewing payment periods that best suit your needs, again with the choices of a month, a quarter, or a year. You can cancel the subscription easily and transparently at any time.

Students in accredited programs have the additional option to purchase the full Professional Edition at a deep discount, and site licensing for universities remains as an economical alternative. Current Community Edition users will be able to continue to operate under the old license agreement until the beginning of 2007.

   

   

Your Opportunity to Try Apollo for Eclipse

Poseidon for UML and Apollo for Eclipse address two very different types of usages. Whereas Poseidon for UML provides the full power of UML 2 during analysis and design phase, Apollo for Eclipse addresses the needs of developers and programmers. We realise that many of you indeed have both use cases, but at different times. To accomodate our users, soon we will be sending out keys for Apollo for Eclipse to premium edition Poseidon for UML customers for a limited introductory period, so that you can have full access and can immediately evaluate our new offering.

So stay tuned, there are a lot of compelling developments coming in the next few weeks. We hope that you are as excited as we are.

Best regards,

your Marko Boger

CEO, Gentleware AG

   

   

contact      impressum      privacy policy      sitemap      print version

© 2000 - 2006 Gentleware AG

If you no longer wish to receive these emails, please reply to this message with "Unsubscribe" in the subject line or simply click on the following link: Unsubscribe

Gentleware AG

Ludwigstrasse 12

20357 Hamburg

Germany

Read the VerticalResponse marketing policy.