<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-31714108</id><updated>2012-01-26T06:58:55.689-08:00</updated><category term='openid4java'/><category term='weblogic console'/><category term='GWT'/><category term='fastswap'/><category term='use cases'/><category term='OAuth'/><category term='pharmacy'/><category term='PLSE Product Line Open Source ProMI mdaVOFI VOFI Financial Planning'/><category term='bug'/><category term='open wave'/><category term='mind map'/><category term='junit'/><category term='use case'/><category term='OpenSocial'/><category term='maven'/><category term='oepe'/><category term='settings'/><category term='open source'/><category term='deutschepost'/><category term='ejosa'/><category term='andromda'/><category term='chrome'/><category term='pustakawan'/><category term='mda'/><category term='osgi'/><category term='guice'/><category term='spring dm. spring osgi'/><category term='unit test'/><category term='dependency management'/><category term='spring'/><category term='apps'/><category term='maven plugins'/><category term='architectureware'/><category term='uml'/><category term='vofi'/><category term='services'/><category term='eclipse'/><category term='productivity'/><category term='librarian'/><category term='perpustakaan nasional'/><category term='file'/><category term='contextual API'/><category term='wave'/><category term='book mda'/><category term='deutsche post'/><category term='Identity Management'/><category term='springframework'/><category term='bürgerportale'/><category term='hibernate'/><category term='dependency injection'/><category term='moving from ant to maven'/><category term='Identitätsmanagement'/><category term='maven vs. ant'/><category term='extensions'/><category term='ant'/><category term='transaction'/><category term='Market Place'/><category term='ajax'/><category term='jformular'/><category term='GAE'/><category term='bonner runde'/><category term='Java'/><category term='cost estimation'/><category term='mdsd'/><category term='fast swap'/><category term='eclipse.ini'/><category term='OpenID'/><category term='oracle'/><category term='build environment'/><category term='rcp'/><category term='Enterprise'/><category term='integration'/><category term='build'/><category term='groovy'/><category term='Ruby'/><category term='UCP'/><category term='session'/><category term='RoR'/><category term='weblogic'/><category term='sculptor'/><category term='components'/><category term='model'/><category term='OAuth for Java'/><category term='plugins'/><category term='wave protocol'/><category term='webapps'/><category term='AppStore'/><category term='anwendungsfall'/><category term='google'/><category term='anwendungsfälle'/><category term='oaw'/><category term='ioc'/><category term='apotik'/><title type='text'>Lofi model @ work</title><subtitle type='html'>Let's talk about Model Driven Architecture (MDA), Open Source Software and Java (included Java island)!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-31714108.post-4049532126195874096</id><published>2011-10-13T16:12:00.000-07:00</published><updated>2012-01-22T11:35:38.793-08:00</updated><title type='text'></title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;span id="internal-source-marker_0.8060209064278752"&gt;&lt;span style="font-weight: bold;  text-decoration: none; vertical-align: baseline; white-space: pre-wrap; color: rgb(0, 102, 0); font-size:15px;"&gt;Why "Polyglot Programming" or "Do It Yourself Programming Languages" or "Language Oriented Programming" sucks?&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Last year we saw the launch of a new Web programming language Dart - Structured Web Programming from Google. A very interesting approach to support web application development. Not so long after Go, Groovy, Ruby, Scala, &lt;i&gt;&amp;lt;&amp;lt; name your DSL here &amp;gt;&amp;gt;&lt;/i&gt;&lt;also put="" your="" own="" dsl="" here=""&gt;&lt;i&gt;;&lt;/i&gt; we see Dart. Is it a good thing to have at least one programming language to solve one problem? The answer is, like we already know, it depends.&lt;/also&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Some important backgrounds you should know about the &lt;/span&gt;&lt;span style="font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;multi programming language paradigm&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; are following:&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;1. You can read Martin Fowler article about language oriented programming with language workbenches which enables you to write small programming languages easily. In this article I see everyone writing their small languages, everywhere. In this concept we see DSL (Domain Specific Language) as the future of our programming activities. Source:&lt;/span&gt;&lt;a href="http://martinfowler.com/articles/languageWorkbench.html"&gt;&lt;span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: normal; vertical-align: baseline; white-space: pre-wrap; "&gt;http://martinfowler.com/articles/languageWorkbench.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;2. Neal Ford talked about Polyglot Programming, combining multiple programming languages in application development. Later Mr. Fowler add this paradigm with Polyglot Persistence, using different type of databases within one application. Source:&lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; &lt;/span&gt;&lt;a href="http://memeagora.blogspot.com/2006/12/polyglot-programming.html" style="font-weight: bold; "&gt;&lt;span style="  color: rgb(0, 0, 153); font-weight: normal; vertical-align: baseline; white-space: pre-wrap; "&gt;http://memeagora.blogspot.com/2006/12/polyglot-programming.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;and &lt;/span&gt;&lt;a href="http://martinfowler.com/bliki/PolyglotPersistence.html" style="font-weight: bold; "&gt;&lt;span style="  color: rgb(0, 0, 153); font-weight: normal; vertical-align: baseline; white-space: pre-wrap; "&gt;http://martinfowler.com/bliki/PolyglotPersistence.html&lt;/span&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Since 2006 I already discussed and collected some experiences in &lt;/span&gt;&lt;span style="font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;multi programming language paradigm:&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;1. I remember a “hot” discussion in year 2006 with Sebastian Meyen, chief in editor of JavaMagazin Germany, also the biggest organisator of Java Conference JAX. We agreed to see the future of programming in multi language paradigm concept. I also said that all those languages will be based on Java VM. I also told him that in one day SAP will move ABAP as a language which can be run within the Java VM, so just another language within the Java environment, no two different personalities any more. Today we see the beginning of this in the project called Caffeine ABAP. Source:&lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; &lt;/span&gt;&lt;a href="https://cw.sdn.sap.com/cw/groups/caffeine" style="font-weight: bold; "&gt;&lt;span style="  color: rgb(0, 0, 153); font-weight: normal; vertical-align: baseline; white-space: pre-wrap; "&gt;https://cw.sdn.sap.com/cw/groups/caffeine&lt;/span&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;2. Also in year 2006 I had a project in which we also used different kind of languages and also creating our own DSL:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="white-space: pre-wrap; "&gt;Java for the most implementation stuffs&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="white-space: pre-wrap; "&gt;UML for design of the business objects. We generate a lot of things using the concept of MDA (Model Driven Architecture)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="white-space: pre-wrap; "&gt;Groovy for a lot of things, especially for writing unit tests&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="white-space: pre-wrap; "&gt;Based on ANTLR we create our own DSL for some aspects of the application&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;It was really exciting and we had some very good programmers in the project. The result was a very nice and flexible product, just as what we expected in the beginning of the project. Please read this article in German language for more information: &lt;/span&gt;&lt;a href="http://www.sigs.de/publications/os/2009/02/dewanto_egger_OS_02_09.pdf" style="font-weight: bold; "&gt;&lt;span style="  color: rgb(0, 0, 153); font-weight: normal; vertical-align: baseline; white-space: pre-wrap; "&gt;http://www.sigs.de/publications/os/2009/02/dewanto_egger_OS_02_09.pdf&lt;/span&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;So after all those nice things about multi language paradigm I told you,&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;b style="color: rgb(204, 0, 0);"&gt;&lt;span&gt;why this sucks at the end?&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Here are some reasons from my point of view:&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;1. As typical in application development the problem comes first in the maintenance phase, after all the capable programmers leave the project. Did you, programming language creators ever try to teach a new programming language to a “normal”, 9 till 5 programmers? I’m not talking about 9 (am) till 9 (pm) programmers who love to learn every new languages. &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;It is definitely tough to be proficient in one programming language&lt;/span&gt;.&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; This is comparable with the languages we speak everyday. I’m not a native English speaker, so I’m quite sure that I made a lot of syntax and grammar errors in this article. It is possible to be able to speak three or four languages perfectly but this is an exception.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;2. Did you ever try to maintain a big Struts web application with AJAX? Just try to add a functionality and you will end up with creating and editing a lot of files: Action and Form files, Struts XML configuration files, JavaScript files with JSON and also HTML or JSP files.  Can you imagine to add Groovy, Scala, Dart additionally into that web app? &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; color: rgb(204, 0, 0); "&gt;The complexity of such a project is very high&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;3. Creating a new programming language means that you also have to build the environment for it. &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0); "&gt;&lt;span style="  text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Good IDE&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;, &lt;/span&gt;&lt;span style="  text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;good documentation&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;, &lt;/span&gt;&lt;span style="  text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;good community support&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;, &lt;/span&gt;&lt;span style="  text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;clear roadmap, backward compatibility&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; are some points to be done. Groovy is a bad example of this. In the early version of this language the editor for Eclipse was really bad. After a while they improved the editor but they make a lot of basic changes in the language so your old groovy applications do not work anymore. You are punished to update to the new version. This never happens to Java. You still can compile Java 1.1 applications with Java 6 compiler.&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;4. Before you are creating your own DSL with e.g. ANTLR ask those language Gurus first, &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; color: rgb(204, 0, 0); "&gt;how hard it is to maintain a programming language for a long term&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;. Before you discuss with them don’t ever create your own DSL. Especially if you are working for SME (Small and Medium sized Enterprise). With a small team and small budget you will never ever maintain your own language decently.&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;So in year 2012, six years after my support to Polyglot Programming, I hope to see following things happen:&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;1. &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;One language for all aspects in one application is the best concept ever&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;. I name this as &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;“One for All Programming Language paradigm”&lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;.&lt;/span&gt;&lt;span style="font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Just like we don’t use English for technical language, German as literate language and Indonesian as community language, to be able to communicate internationally with each other we just use English pragmatically for all aspects of our life. In Germany you need to speak German in all aspects to be able to communicate with others. &lt;b&gt;My best solution sofar is &lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Java + XML&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;, that’s it, &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;no more, no less&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;. &lt;/span&gt;&lt;/b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;No mixing&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; with Groovy, Dart, Ruby, Scala, &lt;name your="" dsl="" here=""&gt;&lt;i&gt;&amp;lt;&amp;lt; name your DSL here &amp;gt;&amp;gt; &lt;/i&gt;&lt;/name&gt;&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;in one application&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;. Especially if you are working as contractor, please don’t try to use all those languages just for a small Java web application. I don’t say that you should not use the other languages at all. The only thing which is important is &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;not to mix those languages in one application&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;. In SME you maybe also want to use&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; just one programming language for all your applications&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;.&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;2. Concept like &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; color: rgb(0, 0, 153);"&gt;&lt;b&gt;GWT &lt;/b&gt;&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;(Java to JavaScript compiler)&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;or &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; color: rgb(0, 0, 153);"&gt;&lt;b&gt;XMLC &lt;/b&gt;&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;(XML compiler which compiles XML, HTML to Java classes) is great. You can work just in plain Java. &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; color: rgb(0, 0, 153);"&gt;&lt;b&gt;Guice &lt;/b&gt;&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;with &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;all Java&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; and no XML is also a great solution (I know that SpringFramework is also doing this with Annotations). &lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; color: rgb(0, 0, 153);"&gt;&lt;b&gt;Android &lt;/b&gt;&lt;/span&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;is great because it uses Java as its application programming language. &lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="text-decoration: none; vertical-align: baseline; white-space: pre-wrap; color: rgb(0, 0, 153);"&gt;As a conclusion I can only hope to see more such pure and plain Java solutions in year 2012! &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-4049532126195874096?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/4049532126195874096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=4049532126195874096' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/4049532126195874096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/4049532126195874096'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2011/10/why-is-polyglot-programming-or-do-it.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-8115251563277667889</id><published>2011-10-13T05:01:00.000-07:00</published><updated>2011-10-13T05:11:01.430-07:00</updated><title type='text'></title><content type='html'>&lt;div style="color: rgb(0, 102, 0);"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;OpenID and OAuth: Step2 Protocol&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;My new article at heise.de about OpenID and OAuth: &lt;i&gt;Step2 Protocol&lt;/i&gt; or also known as &lt;i&gt;Hybrid Protocol&lt;/i&gt; OpenID and OAuth: &lt;a href="http://heise.de/-1359904"&gt;OpenID and OAuth: Step2 Protocol&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enjoy!&lt;/div&gt;&lt;div&gt;Lofi.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-8115251563277667889?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/8115251563277667889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=8115251563277667889' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/8115251563277667889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/8115251563277667889'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2011/10/my-new-article-about-openid-and-oauth.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-383928710753254269</id><published>2011-06-16T23:07:00.000-07:00</published><updated>2011-08-03T05:19:05.351-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='build environment'/><category scheme='http://www.blogger.com/atom/ns#' term='moving from ant to maven'/><category scheme='http://www.blogger.com/atom/ns#' term='maven vs. ant'/><category scheme='http://www.blogger.com/atom/ns#' term='maven plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'></title><content type='html'>&lt;div style="color: rgb(0, 102, 0);"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Moving from Ant to Maven: Best Practices with Maven Plugins&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I would like to share my experience of moving from "our reinventing wheel" of Ant build scripts to Maven standard.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;I reworked some apps which have following characteristics:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(1) Java Version:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- The apps should be &lt;span style="color: rgb(0, 102, 0);"&gt;compiled with &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Java 6 version&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(2) Basic technologies:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- Some of the apps are using &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Model Driven Architecture/Model Driven Software Development&lt;/span&gt; things, it means we have some MDA/MDSD generators inside our Ant scripts, like &lt;span style="color: rgb(0, 102, 0);"&gt;AndroMDA &lt;/span&gt;or &lt;span style="color: rgb(0, 102, 0);"&gt;oAW&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;- Almost all the apps use &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Hibernate&lt;/span&gt;, so we need to generate the whole Database scheme to be able to create the whole database automatically.&lt;/div&gt;&lt;div&gt;- Some of the apps use older version of &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;ANTLR&lt;/span&gt;. So we have some of ANTLR source codes which have to be compiled.&lt;/div&gt;&lt;div&gt;- Some of the apps use older version of &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Groovy&lt;/span&gt;. So we have some of Groovy source codes which have to be compiled.&lt;/div&gt;&lt;div&gt;- A webapp uses &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;GWT&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;as presentation layer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(3) Packaging:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- Some of the webapps have somekind of &lt;span style="color: rgb(0, 102, 0);"&gt;information about the version&lt;/span&gt;. For example the webapps have &lt;span class="Apple-style-span"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;version.html&lt;/span&gt; &lt;/span&gt;file which should be automatically generated with some information like build timestamp, the person who build the app, the description of the app, etc.&lt;/div&gt;&lt;div&gt;- The apps or modules should be &lt;span style="color: rgb(0, 102, 0);"&gt;packaged as war or jar&lt;/span&gt;. Additionally they also include some &lt;span style="color: rgb(0, 102, 0);"&gt;additional information like installation documentation, SQL scripts&lt;/span&gt;, etc. which have to be package as a &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;zip file&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; separately&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;- All of the apps or modules should also &lt;span class="Apple-style-span"&gt;package the &lt;span style="color: rgb(0, 102, 0);"&gt;source codes&lt;/span&gt;&lt;/span&gt; additionally to the packaged artifacts, so we can debug the apps easily.&lt;/div&gt;&lt;div&gt;- The webapps need to &lt;span style="color: rgb(0, 102, 0);"&gt;package the &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;class files&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; additionally&lt;/span&gt; as a&lt;span class="Apple-style-span"&gt; separate jar file&lt;/span&gt;, so that this can be added as a &lt;span style="color: rgb(0, 102, 0);"&gt;dependency into another Maven project or module&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(4) Test:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- The apps have some &lt;span style="color: rgb(0, 102, 0);"&gt;unit tests&lt;/span&gt; in &lt;span class="Apple-style-span"&gt;JUnit&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;- The apps have some &lt;span style="color: rgb(0, 102, 0);"&gt;integration test&lt;/span&gt; for &lt;span class="Apple-style-span"&gt;SpringFramework context &lt;/span&gt;and &lt;span class="Apple-style-span"&gt;database &lt;/span&gt;or &lt;span class="Apple-style-span"&gt;service methods &lt;/span&gt;test in SpringFramework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(5) Optimization:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- JavaScript, CSS of some webapps should be optimized using &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;YUICompressor&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;- JSP files should be &lt;span class="Apple-style-span"&gt;precompiled with &lt;span style="color: rgb(0, 102, 0);"&gt;JSPC from Weblogic&lt;/span&gt;&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(6) Quality check:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- Quality check: the apps should be quality checked using &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Emma &lt;/span&gt;(code coverage) and &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;CheckStyle&lt;/span&gt; (quality of the codes).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(7) Deployment:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- The webapps should be &lt;span style="color: rgb(0, 102, 0);"&gt;automatically deployed to &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Weblogic&lt;/span&gt;. &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;- All &lt;span style="color: rgb(0, 102, 0);"&gt;configurations&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;should be automatically uploaded to the server.&lt;/div&gt;&lt;div&gt;- The &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;database scheme&lt;/span&gt; should be automatically &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;upgraded&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;and &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;downgraded&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(8) Development support:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;JRebel &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;rebel.xml&lt;/span&gt; file should be automatically generated for chosen projects or modules.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(204, 0, 0);" class="Apple-style-span"&gt;&lt;b&gt;Yes, our Ant scripts can do the (almost) whole things above.&lt;/b&gt;&lt;/span&gt; You can imagine how complex they are? Yes, everything are in the Ant scripts and you need to turn on/off the features you need. &lt;span style="color: rgb(204, 0, 0);" class="Apple-style-span"&gt;Remember how SAP works?&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt; Yes, we call this customizing! &lt;/span&gt;This is where I see the power of Maven. &lt;b&gt;&lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;The plugin concept is just a better concept. Instead of having everything, we only have a small "core" and we add plugins on the top to fullfil our need.&lt;/span&gt; &lt;/b&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;In case of the Ant scripts, you have everything (although you don't need all of them) and then you use switcher to turn them on and off.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So how did I solve the requirements above with Maven? &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Here they are, the plugins we need!&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;In this article I just want to show you the plugins I used:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(1) Java Version:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;This is quite simple, just add &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;maven-compiler-plugin&lt;/b&gt; (2.3.2)&lt;/span&gt;&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(2) Basic technologies:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- &lt;span style="color: rgb(0, 102, 0);"&gt;MDA/MDSD:&lt;/span&gt; In this case I have two main technologies: &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;AndroMDA &lt;/span&gt;and &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;oAW&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;cartridges. For oAW 4.3.x cartridges we have&lt;i&gt; &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;&lt;b&gt;fornax-oaw-m2-plugin&lt;/b&gt; (3.0.1)&lt;/span&gt;&lt;/i&gt;. No problem at all. For AndroMDA 3.2 we also have some Maven plugins. My problem was that we use AndroMDA 3.1. In this version there are only some Maven 1.x available. So in this case I have to use &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;maven-antrun-plugin&lt;/b&gt; (1.2).&lt;/span&gt;&lt;/i&gt; Using &lt;i&gt;maven-antrun-plugin&lt;/i&gt; I can execute the AndroMDA task to generate the codes without any problems. I need to use the older version of this plugin because of the dependency to the older Ant version of the AndroMDA 3.1 task. One thing you should not forget: if you are generating codes you need to include the generated codes into your compile classpath. Using &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;build-helper-maven-plugin&lt;/b&gt; (1.5)&lt;/span&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;you can achieve this. Great!&lt;/div&gt;&lt;div&gt;- To be able to generate the SQL DDL scripts from &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Hibernate &lt;/span&gt;you just need to add &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;hibernate3-maven-plugin&lt;/b&gt; (2.2)&lt;/span&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;. &lt;/span&gt;Working like a charm!&lt;/div&gt;&lt;div&gt;- Because we are using older version of &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;ANTLR &lt;/span&gt;we also have to use &lt;b style="color: rgb(0, 102, 0); font-style: italic; "&gt;maven-antrun-plugin&lt;/b&gt;&lt;i style="color: rgb(0, 102, 0); "&gt; (1.2) &lt;/i&gt;to be able to execute the ANTLR compiler.&lt;/div&gt;&lt;div&gt;- The same thing also happens with our older version of &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Groovy&lt;/span&gt;. Just use &lt;b style="color: rgb(0, 102, 0); font-style: italic; "&gt;maven-antrun-plugin&lt;/b&gt;&lt;i style="color: rgb(0, 102, 0); "&gt; (1.2).&lt;/i&gt;&lt;/div&gt;&lt;div&gt;- For some &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;GWT &lt;/span&gt;projects just use &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;gwt-maven-plugin&lt;/b&gt; (2.2.0)&lt;/span&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt; This is a great Maven plugin (and the one and only) for GWT. This plugin has a very good documentation, so integrating it is quite easy.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(3) Packaging:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- The first step is to&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;delete some of the target directories&lt;/span&gt; (generated directories). For this purpose we have &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;maven-clean-plugin&lt;/b&gt; (2.4.1)&lt;/span&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;- To be able to &lt;span style="color: rgb(0, 102, 0);"&gt;generate a &lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;version.html&lt;/span&gt; &lt;/span&gt;file I use &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;maven-resources-plugin&lt;/b&gt; (2.5)&lt;/span&gt;&lt;/i&gt;. With this plugin you will be able to copy some resources (like version.html), parse the file and exchange all the variables with the content you like. In our case we need to exchange some variables with Maven pom.xml information (&lt;i&gt;${maven.build.timestamp}&lt;/i&gt;, &lt;i&gt;${pom.version}&lt;/i&gt;, &lt;i&gt;${pom.description}&lt;/i&gt;, etc.).  &lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;To be able to read these information you need to use at least the latest Maven 2.2.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;1.&lt;/span&gt; In the future we want to create our own Maven plugin to do this stuff, so that we can encapsulate the function better.&lt;/div&gt;&lt;div&gt;- To &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;package additional information and files&lt;/span&gt; we have &lt;i&gt;&lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;&lt;b&gt;maven-assembly-plugin &lt;/b&gt;(2.1)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt; &lt;/i&gt;This plugin is very flexible. So I can capture all the requirements of packaging additional zip files with it.&lt;/div&gt;&lt;div&gt;- To be able to&lt;span style="color: rgb(0, 102, 0);"&gt; deploy the source codes into Maven repository&lt;/span&gt; just use &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;maven-source-plugin&lt;/b&gt; (2.1.2)&lt;/span&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;- In some of the webapps I need to &lt;span style="color: rgb(0, 102, 0);"&gt;package the "classes" into a separate jar file&lt;/span&gt;, so that this file can be added into a Maven dependency by other modules. In this case you can split the projects into two: one project for the "classes" and one project for the "webapp". But I did not want this because it will add the complexity of my projects (&lt;span style="color: rgb(204, 0, 0);"&gt;two projects instead of one&lt;/span&gt;). So I use &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;maven-war-plugin&lt;/b&gt; (2.1.1) &lt;/span&gt;&lt;/i&gt;and add a configuration: &lt;i style="color: rgb(0, 0, 153);"&gt;attachClasses = true&lt;/i&gt;. That's it. You will get a new artifact for the classes with additional &lt;i style="color: rgb(0, 0, 153);"&gt;&lt;classifier&gt;classifier: classes&lt;/classifier&gt;.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;- In some business modules (Jar files) I need to exclude the model files which are the foundation of MDA/MDSD development style. For this purpose just use &lt;span class="Apple-style-span"&gt;&lt;b style="color: rgb(0, 102, 0); font-style: italic; "&gt;maven-jar-plugin&lt;/b&gt;&lt;i style="color: rgb(0, 102, 0); "&gt; (2.3.1)&lt;/i&gt; and exclude all the model files you don't want to be packaged in your Jar file. The cool thing is that your &lt;i&gt;&lt;span class="Apple-style-span"&gt;maven-source-plugin&lt;/span&gt;&lt;/i&gt; won't be disturbed by this action. So you will have all those model files still included in your source Jar file.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(4) Test:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- For &lt;span style="color: rgb(0, 102, 0);"&gt;unit test &lt;/span&gt;just use&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;&lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;maven-surefire-plugin&lt;/b&gt; (2.8.1)&lt;/span&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;- For &lt;span style="color: rgb(0, 102, 0);"&gt;integration test&lt;/span&gt; just use &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;&lt;i&gt;&lt;b&gt;maven-failsafe-plugin&lt;/b&gt; (2.8.1)&lt;/i&gt;&lt;/span&gt;. It is important to separate unit and integration test because the integration test can take sometime. Using both plugins will make your project build more flexible, trust me!&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(5) Optimization:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- For CSS, JavaScript optimization with &lt;span style="color: rgb(0, 102, 0);"&gt;YUICompressor &lt;/span&gt;just use &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;yuicompressor-maven-plugin&lt;/b&gt; (1.1)&lt;/span&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt; It works without any problems. One thing you should aware of: if you are build a webapp you also need to configure &lt;i&gt;maven-war-plugin&lt;/i&gt; so that it can copy the result of the optimization into the war file. This is also one thing you maybe want to use &lt;span style="color: rgb(0, 0, 153);"&gt;Maven profile concept&lt;/span&gt;, since you don't want to have optimized files within your development lifecycle.&lt;/div&gt;&lt;div&gt;- &lt;span style="color: rgb(0, 102, 0);"&gt;Precompiling JSP files&lt;/span&gt; with JSPC from Weblogic: this is still an open point. I can use &lt;b style="color: rgb(0, 102, 0); font-style: italic; "&gt;maven-antrun-plugin&lt;/b&gt;, but I think that there should be a better way.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(6) Quality check:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- For &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Emma&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;just use &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;emma-maven-plugin &lt;/b&gt;(1.0-alpha-2)&lt;/span&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;- For &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;CheckStyle &lt;/span&gt;just use &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;maven-checkstyle-plugin&lt;/b&gt; (2.3)&lt;/span&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt; You also need to use &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;surefire-report-maven-plugin&lt;/b&gt; (2.8.1)&lt;/span&gt;&lt;/i&gt; to be able to get a report on CheckStyle.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(7) Deployment:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;Automatic deployment war file with Weblogic&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;can now be done easily with this plugin: &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;weblogic-maven-plugin&lt;/b&gt; (10.3.4)&lt;/span&gt;&lt;/i&gt; from Oracle itself. This is great since this Maven support comes from Oracle. Here is the link to the Oracle documentation of this Maven plugin: &lt;a href="http://download.oracle.com/docs/cd/E17904_01/web.1111/e13702/maven_deployer.htm"&gt;Maven plugin from Oracle&lt;/a&gt;. To be able to define the server location without changing the&lt;span style="font-style: italic;"&gt; pom.xml&lt;/span&gt; I use this plugin &lt;i style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;properties-maven-plugin&lt;/b&gt; (1.0-alpha-2)&lt;/span&gt;&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt; With this plugin you can read any properties file and you will have those properties accessible from your Maven build. Great stuff!&lt;/div&gt;&lt;div&gt;- If you want to be able to make automatic deployment you also need to support &lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;upload of configuration files&lt;/span&gt; to your server. For this purpose you can use this plugin: &lt;i style="color: rgb(0, 102, 0); "&gt;&lt;b&gt;wagon-maven-plugin&lt;/b&gt; (1.0-beta-3). &lt;/i&gt;You can download and upload all kind of files with different kind of protocols (http, scp, ftp, etc.).&lt;/div&gt;&lt;div&gt;- The last important thing is to be able to &lt;span style="color: rgb(0, 102, 0);"&gt;automatically &lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;upgrade or downgrade your database&lt;/span&gt; scheme&lt;/span&gt;. This is an open point for me. There are some Maven plugins out there, but I had no time to analyse them. See &lt;a href="https://profiles.google.com/100376454320556314126/posts/c6fpSTbKawt"&gt;my buzz for the list of them&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(8) Development support:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;- To &lt;span class="Apple-style-span"&gt;generate &lt;span style="color: rgb(0, 102, 0);"&gt;rebel.xml&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;you can use&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);" class="Apple-style-span"&gt;&lt;i&gt;&lt;b&gt;jrebel-maven-plugin&lt;/b&gt; (1.0.7)&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;As a &lt;span style="font-weight: bold;"&gt;conclusion &lt;/span&gt;I just can say, &lt;b style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-style-span"&gt;Maven and its plugin ecosystem are great&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;.&lt;/span&gt; No matter how complex your project you can still handle it easily with Maven plugins. My lessons learned is that &lt;span style="color: rgb(204, 0, 0);" class="Apple-style-span"&gt;&lt;b&gt;DO NOT REINVENTING WHEEL!&lt;/b&gt;&lt;/span&gt; There are a lot of good Maven plugins out there! In case you cannot find one, just use &lt;i&gt;maven-antrun-plugin&lt;/i&gt;. You can almost do everything with it. &lt;span style="color: rgb(204, 0, 0);"&gt;Just don't forget that you don't want that chaos back to Ant, so use it with precautions.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;... and to all other developers who still doing their own build processes... try Maven, you won't regret!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;Lofi.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-383928710753254269?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/383928710753254269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=383928710753254269' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/383928710753254269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/383928710753254269'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2011/06/moving-from-ant-to-maven-best-practices.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-2886918480720855400</id><published>2011-04-11T03:51:00.001-07:00</published><updated>2011-04-11T15:09:16.624-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AppStore'/><category scheme='http://www.blogger.com/atom/ns#' term='OAuth'/><category scheme='http://www.blogger.com/atom/ns#' term='plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='webapps'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenID'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><category scheme='http://www.blogger.com/atom/ns#' term='contextual API'/><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='extensions'/><category scheme='http://www.blogger.com/atom/ns#' term='Market Place'/><category scheme='http://www.blogger.com/atom/ns#' term='apps'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSocial'/><title type='text'></title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;Inside-Out and Outside-In Integration of Webapps: Services and Extensions&lt;/span&gt;&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;In terms of integrating your webapp with other webapps and another way around I see two different integration types:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;i&gt;&lt;b&gt;1. Inside-Out Integration&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;This is the standard way and almost every webapps available use this possibility. For other webapps to be able to use some functionalities of your webapp you often offer Web services (mostly in RESTful manner) which can be called from outside or other webapps easily.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-5RHa9zjhpYo/TaNzFZr-TXI/AAAAAAAAAB0/r3v1z4787WQ/s1600/Integration%2BConcept%2BInside-Out%2BFit.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 434px; height: 217px;" src="http://1.bp.blogspot.com/-5RHa9zjhpYo/TaNzFZr-TXI/AAAAAAAAAB0/r3v1z4787WQ/s400/Integration%2BConcept%2BInside-Out%2BFit.jpg" alt="" id="BLOGGER_PHOTO_ID_5594441698756152690" border="0" /&gt;&lt;/a&gt;In this area you offen need following strategies and standards:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Webservice protocol: &lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;REST&lt;/span&gt; for allowing to define the functionalities you want to export to other webapps.&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;OAuth&lt;/span&gt; &lt;/span&gt;(two and three legged) for allowing other webapps to calls your webapp services, authorization.&lt;/li&gt;&lt;li&gt;Sometimes &lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;OpenID &lt;/span&gt;for allowing other webapps to use the same login, authentification.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;i&gt;&lt;b&gt;2. Outside-In Integration&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;This is still not commonly used in webapps development. In some desktop apps we know this as a concept of &lt;i&gt;Extensions&lt;/i&gt; and/or &lt;i&gt;P&lt;/i&gt;&lt;i&gt;lugin&lt;/i&gt;s (I use these terms exchangeable). &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;This integration lets other webapps run in the context of your webapp&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/--DA3PmyTMYU/TaNzeD7WeTI/AAAAAAAAAB8/AZjtc8s9-rY/s1600/Integration%2BConcept%2BOutside-In%2BFit.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 322px; height: 296px;" src="http://4.bp.blogspot.com/--DA3PmyTMYU/TaNzeD7WeTI/AAAAAAAAAB8/AZjtc8s9-rY/s400/Integration%2BConcept%2BOutside-In%2BFit.jpg" alt="" id="BLOGGER_PHOTO_ID_5594442122411800882" border="0" /&gt;&lt;/a&gt;Mostly this is the second step after you implement the first step above (Inside-Out integration) because you need all the things from the first step. All in all you'll need following strategies and standards:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Webservice protocol: &lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;REST&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;for allowing to define the functionalities you want to export to other webapps.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;OAuth &lt;/span&gt;(two and three legged) for allowing other webapps to calls your webapp services, authorization.&lt;/li&gt;&lt;li&gt;Sometimes &lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;OpenID &lt;/span&gt;for allowing other webapps to use the same login, authentification.&lt;/li&gt;&lt;/ul&gt;Additionally you also need following strategies and standards:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;OpenSocial &lt;/span&gt;Gadgets to allowing other webapps integrating their Plugins or Extensions into your webapp. Users of your webapp will be able to install such Plugins or Extensions for their own needs.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;AppStore &lt;/span&gt;or &lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;Market Place&lt;/span&gt; or &lt;span style="color: rgb(0, 0, 153);"&gt;WebStore &lt;/span&gt;(I use these terms exchangeable)&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;to let your webapp users' easily &lt;span style="font-style: italic;"&gt;browse&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;select&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;buy, install &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;review &lt;/span&gt;the Plugins or Extensions from a central repository.&lt;/li&gt;&lt;li&gt;Sometimes &lt;span style="color: rgb(0, 0, 153);" class="Apple-style-span"&gt;OSGi&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;to let people extends your webapp with some new functionalities. This is however a tight integration of Plugins or Extensions with your webapp which is not easily done and needs more mature concept of your webapp (security, dependencies). Such an integration will not be available per user basis, instead it will be an extension per webapp. The system administrator of your webapp will likely install such Plugins or Extensions.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The main idea of doing these two integration concepts is to build a&lt;span style="font-style: italic;"&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;big ecosystem&lt;/span&gt;&lt;/span&gt; for your webapp so that a lot of people will use your webapp. By doing these two steps &lt;span style="font-style: italic;"&gt;you will be able to open your webapp, &lt;span style="font-weight: bold;"&gt;not only&lt;/span&gt; that other webapps can integrate some functionalities or services of your webapp in theirs &lt;span style="font-weight: bold;"&gt;but also&lt;/span&gt; they will be able to extend the functionalites or services within the context of your webapp&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Let's take a short look of some successful webapps and how they support the two types of integration concepts I mentioned above:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;1. Facebook:&lt;/span&gt; No doubt, both integrations have been done here. You have &lt;a style="font-style: italic;" href="http://developers.facebook.com/docs/guides/web"&gt;Facebook API&lt;/a&gt; (e.g.: Like Button) for the first and&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;a style="font-style: italic;" href="http://developers.facebook.com/docs/guides/canvas"&gt;Facebook Apps&lt;/a&gt; (Canvas app) for the second.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;2. Twitter:&lt;/span&gt; This webapp only supports the first integration as a collection of &lt;a style="font-style: italic;" href="http://dev.twitter.com/doc"&gt;Twitter API&lt;/a&gt; (e.g.: Tweet Button, REST API). They still do not support the concept of Extensions for the second integration type.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;3. Google Mail:&lt;/span&gt; This webapp supports both integration types. For the first type they offer e.g.: &lt;span style="font-style: italic;"&gt;Email Settings API&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;OAuth Access to IMAP and SMTP API&lt;/span&gt;. For the second type you can use &lt;span style="font-style: italic; "&gt;Sidebar Gadgets for visual Plugins&lt;/span&gt; and &lt;span style="font-style: italic; "&gt;Contextual Gadgets for non-visual Plugins&lt;/span&gt;. For more information please take a look at this &lt;a href="http://code.google.com/apis/gmail/docs"&gt;API documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;div&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;In my opinion, if you want your webapp to be successful, you need to think about both integration concepts directly in the beginning of your development.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;Don't create a webapp without a concept of ecosystem anymore!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Next time I'll take a look at how you can plan and implement both integration steps in a simple webapp project. What are the things you need to take care of.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;Lofi.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-2886918480720855400?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/2886918480720855400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=2886918480720855400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/2886918480720855400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/2886918480720855400'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2011/04/inside-out-and-outside-in-integration.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-5RHa9zjhpYo/TaNzFZr-TXI/AAAAAAAAAB0/r3v1z4787WQ/s72-c/Integration%2BConcept%2BInside-Out%2BFit.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-4867448898536636951</id><published>2010-06-15T05:18:00.000-07:00</published><updated>2010-06-15T07:58:21.845-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='wave'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'></title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;Wave Discussion: Ant vs. Maven&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Let's discuss advantages and disadvantages using Ant and/or Maven!&lt;br /&gt;&lt;br /&gt;&lt;div id="waveframe" style="width: 100%; height: 500px"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-4867448898536636951?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/4867448898536636951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=4867448898536636951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/4867448898536636951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/4867448898536636951'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2010/06/wave-discussion-ant-vs.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-1109673958455534178</id><published>2010-04-07T13:32:00.000-07:00</published><updated>2010-04-23T14:14:28.441-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'></title><content type='html'>&lt;b style="color: rgb(0, 102, 0);"&gt;Don't leave home without these Eclipse 3.5.x (Galileo) Plugins...&lt;/b&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;M2Eclipse:&lt;b&gt; &lt;/b&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;http://m2eclipse.sonatype.org/sites/m2e&lt;/span&gt;&lt;/li&gt;&lt;li&gt;JarPlug:&lt;b&gt; &lt;/b&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;http://www.simontuffs.com/jar-plug&lt;/span&gt;&lt;/li&gt;&lt;li&gt;LogWatcher:&lt;b&gt; &lt;/b&gt;Without Update Manager: &lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;http://graysky.sourceforge.net&lt;/span&gt;&lt;/li&gt;&lt;li&gt;OEPE (Oracle Enterprise Pack for Eclipse): h&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;ttp://download.oracle.com/otn_software/oepe/galileo&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Google Plugins for GWT and GAE: &lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;http://dl.google.com/eclipse/plugin/3.5&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Subeclipse SVN: &lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;http://subclipse.tigris.org/update_1.6.x&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;Android&lt;/span&gt;&lt;/span&gt;:&lt;b&gt; &lt;/b&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;http://dl-ssl.google.com/android/eclipse&lt;/span&gt;&lt;/li&gt;&lt;li&gt;ATF (Ajax Tools Framework): &lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;installation guide: http://wiki.eclipse.org/ATF/Installing&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;A good comprehensive list of Eclipse plugins can be found here:&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt; http://www.tutego.de/java/eclipse/plugin/eclipse-plugins.html&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;Have fun!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;Lofi.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 51, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-1109673958455534178?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/1109673958455534178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=1109673958455534178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/1109673958455534178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/1109673958455534178'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2010/04/dont-leave-home-without-these-eclipse-3.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-6123507415042549959</id><published>2010-03-11T12:55:00.000-08:00</published><updated>2011-04-11T03:30:16.352-07:00</updated><title type='text'></title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span" style="color:#006600;"&gt;GWT Spring Struts&lt;/span&gt;&lt;/b&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a good starting point for integrating Spring, Struts and GWT:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.jroller.com/masini/entry/template_project_for_gwt_with"&gt;http://www.jroller.com/masini/entry/template_project_for_gwt_with&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;Lofi.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-6123507415042549959?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/6123507415042549959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=6123507415042549959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/6123507415042549959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/6123507415042549959'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2010/03/gwt-spring-struts-this-is-good-starting.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-5805701124701196346</id><published>2010-02-15T01:13:00.001-08:00</published><updated>2010-02-15T01:23:00.395-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='fast swap'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='fastswap'/><category scheme='http://www.blogger.com/atom/ns#' term='oepe'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;Top 10 Productivity Tools for Java Developers on Oracle Weblogic&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A good presentation about the topic above: &lt;a href="http://www.slideshare.net/phumphrey/top-10-productivity-tools-for-java-developers-on-oracle-weblogic-server-11g"&gt;Top 10 Productivity Tools for Java Developers on Oracle Weblogic&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-5805701124701196346?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/5805701124701196346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=5805701124701196346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/5805701124701196346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/5805701124701196346'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2010/02/top-10-productivity-tools-for-java.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-2214080795724230417</id><published>2010-02-08T23:19:00.000-08:00</published><updated>2010-02-08T23:21:06.258-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='springframework'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='components'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;Custom Spring Component&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;HOW-TO write your own Spring Component: &lt;a href="http://www.javaworld.com/javaworld/jw-02-2008/jw-02-springcomponents.html"&gt;Custom Spring Component&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-2214080795724230417?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/2214080795724230417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=2214080795724230417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/2214080795724230417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/2214080795724230417'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2010/02/custom-spring-component-how-to-write.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-5600550469435243199</id><published>2010-02-08T01:16:00.000-08:00</published><updated>2010-02-08T23:16:30.200-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='springframework'/><category scheme='http://www.blogger.com/atom/ns#' term='spring dm. spring osgi'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;Spring DM Article in German Online JavaMagazin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is an online version of our article about &lt;a href="http://it-republik.de/jaxenter/artikel/OSGi-mit-Spring-DM-2482.html"&gt;Spring DM (OSGi)&lt;/a&gt;. Following article (German language) about OSGi and JEE is also very interesting: &lt;a href="http://www.dirk-mascher.de/publikationen/mascher_wand_osgi_0708.pdf"&gt;JEE and OSGi&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-5600550469435243199?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/5600550469435243199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=5600550469435243199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/5600550469435243199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/5600550469435243199'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2010/02/spring-dm-article-in-german-online.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-7745459979244411484</id><published>2009-11-20T04:59:00.000-08:00</published><updated>2009-11-30T07:57:07.172-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fast swap'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='fastswap'/><category scheme='http://www.blogger.com/atom/ns#' term='oepe'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;HOW-TO: OEPE - FastSwap with Maven2 and M2Eclipse Plugin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At the moment there is not enough information if you want to jump start with OEPE (and of course using FastSwap) and Maven2 (using M2Eclipse plugin). This HOW-TO shows you how to achieve this. You need to have Eclipse (3.4 or 3.5), WLS (10.3 or 11) OEPE, Maven2 and M2Eclipse installed correctly before you can follow the steps below:&lt;br /&gt;&lt;br /&gt;1. Create a web application with the webapp wizard (dynamic web project). Choose a webapp based on WLS (10.3 in my case). Please change following settings afterwards to be Maven complianced:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Source for web: &lt;span style="color: rgb(0, 0, 153);"&gt;src/main/webapp&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Source for Java: &lt;span style="color: rgb(0, 0, 153);"&gt;src/main/java&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;2. Turn on Maven project on the project above ("mavenized the project") with M2Eclipse.&lt;br /&gt;&lt;br /&gt;3. After you mavenized the project you can delete the directory &lt;span style="color: rgb(0, 0, 153);"&gt;build/classes&lt;/span&gt; since Maven uses &lt;span style="color: rgb(0, 0, 153);"&gt;target/classes&lt;/span&gt; directory. Everything should be customized to Maven directory structure automatically.&lt;br /&gt;&lt;br /&gt;4. You can add&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;src/test/java&lt;/span&gt; - if you need it&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;src/test/resources&lt;/span&gt; - and also&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;src/main/resources&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And don't forget to give a correct output direcory for each source directory (&lt;span style="color: rgb(0, 0, 153);"&gt;target/classes&lt;/span&gt; or &lt;span style="color: rgb(0, 0, 153);"&gt;target/test-classes&lt;/span&gt;). After that you will have following directory structure in your project:&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_W1Fkce4OOzA/SxO7HL9liEI/AAAAAAAAAAU/Nbkvy_PuVPc/s1600/OEPE-M2Eclipse.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 242px; height: 298px;" src="http://3.bp.blogspot.com/_W1Fkce4OOzA/SxO7HL9liEI/AAAAAAAAAAU/Nbkvy_PuVPc/s320/OEPE-M2Eclipse.jpg" alt="" id="BLOGGER_PHOTO_ID_5409873309546678338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;5. Now you should be able to run maven "package" within your M2Eclipse plugin correctly. And also you should be able to deploy the web app in WLS just by doing "run on server".&lt;br /&gt;&lt;br /&gt;6. You can skip this step because you are using OEPE which turned on FastSwap automatically. To make it sure that FastSwap works correctly, you can turn on FastSwap in the weblogic.xml file (please click on the image to make it larger).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_W1Fkce4OOzA/SxPHLup0jAI/AAAAAAAAAAs/NNVBNDTF_NU/s1600/OEPE-FastSwap.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 207px;" src="http://4.bp.blogspot.com/_W1Fkce4OOzA/SxPHLup0jAI/AAAAAAAAAAs/NNVBNDTF_NU/s400/OEPE-FastSwap.jpg" alt="" id="BLOGGER_PHOTO_ID_5409886581718027266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;Be careful: I get following problem if I turn on FastSwap in my weblogic.xml: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;After turning on FastSwap in weblogic.xml file, the FastSwap mechanism does not work correctly!&lt;/span&gt; A change in a private field does not get updated in my webapp. If I turn this off again and redeploy my webapp, FastSwap is working correctly again. A change in a private field will be updated immediately. &lt;span style="color: rgb(204, 0, 0);"&gt;Do you get the same problem with your OEPE and WLS 10.3 here?&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;7. You have to add the "Maven Dependencies" container into your Java EE Module Dependencies for OEPE to be able to use all the jar files inside the Maven dependencies (please click on the image below to make it larger).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W1Fkce4OOzA/SxPrFH4zs4I/AAAAAAAAAA0/C0fV9Jg4M8w/s1600/OEPE-M2-Deps-Container.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 298px;" src="http://1.bp.blogspot.com/_W1Fkce4OOzA/SxPrFH4zs4I/AAAAAAAAAA0/C0fV9Jg4M8w/s400/OEPE-M2-Deps-Container.jpg" alt="" id="BLOGGER_PHOTO_ID_5409926050651288450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;8. &lt;span style="font-weight: bold;"&gt;You made it.&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;Now you can change your classes without having to redeploy the application and at the same time you still have all the advantages of using Maven2 in your project.&lt;/span&gt; Have fun!&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-7745459979244411484?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/7745459979244411484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=7745459979244411484' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/7745459979244411484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/7745459979244411484'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/11/how-to-oepe-with-maven2-and-m2eclipse.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_W1Fkce4OOzA/SxO7HL9liEI/AAAAAAAAAAU/Nbkvy_PuVPc/s72-c/OEPE-M2Eclipse.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-2380633588476622208</id><published>2009-11-11T12:09:00.000-08:00</published><updated>2009-11-11T12:14:16.834-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OAuth'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='OAuth for Java'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenID'/><category scheme='http://www.blogger.com/atom/ns#' term='openid4java'/><title type='text'></title><content type='html'>&lt;span&gt;&lt;span style="font-weight: bold;"&gt;OAuth with Java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is the third part of my article series about OpenID and OAuth in &lt;a href="http://www.heise.de/"&gt;heise.de&lt;/a&gt;:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Article: &lt;a href="http://www.heise.de/developer/meldung/Autorisierungsdienste-mit-OAuth-849129.html"&gt;Autorisierungsdienste mit OAuth&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Enjoy reading!&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-2380633588476622208?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/2380633588476622208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=2380633588476622208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/2380633588476622208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/2380633588476622208'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/11/this-is-third-part-of-my-article-series.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-3661941330626025639</id><published>2009-10-08T12:10:00.000-07:00</published><updated>2009-10-08T12:14:37.598-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Spring Batch&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some good introductions to Spring Batch:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://jaoo.dk/london-2008/file?path=/qcon-london-2008/slides/DaveSyer_IntroducingSpringBatch.pdf"&gt;Introducing Spring Batch Slides from SpringSource&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.dzone.com/print/8845"&gt;Getting Started With Spring Batch 2.x&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://static.springsource.org/spring-batch/reference/html-single/index.html"&gt;Reference documentation to Spring Batch 2.x&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Have fun!&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-3661941330626025639?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/3661941330626025639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=3661941330626025639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/3661941330626025639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/3661941330626025639'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/10/spring-batch-here-are-some-good.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-2832436896760390873</id><published>2009-09-22T12:37:00.000-07:00</published><updated>2009-09-22T12:41:29.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mind map'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;XMind: A Cool MindMap Tool &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I found this cool Open Source and Eclipse RCP-based MindMap tool &lt;a href="http://www.xmind.net/"&gt;XMind&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-2832436896760390873?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/2832436896760390873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=2832436896760390873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/2832436896760390873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/2832436896760390873'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/09/xmind-cool-mindmap-tool-i-found-this.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-5191363853461143005</id><published>2009-09-21T13:50:00.001-07:00</published><updated>2009-12-01T01:11:25.730-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='springframework'/><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='fast swap'/><category scheme='http://www.blogger.com/atom/ns#' term='oaw'/><category scheme='http://www.blogger.com/atom/ns#' term='fastswap'/><category scheme='http://www.blogger.com/atom/ns#' term='oepe'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='jformular'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;One Day in your Life... with UML2, oAW, Weblogic FastSwap, Oracle Enterprise Pack for Eclipse, Maven2 and&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;SpringFramework&lt;/span&gt;...&lt;br /&gt;&lt;br /&gt;In my new project - as usual in a software project - we have a very tight schedule. Using our old JEE application architecture (Oracle 10g, EJB 2.x, JFormular, Ant with Maven2 dependencies, full deployment EAR, WAR and EJB JAR on Weblogic 10.3 with Java6) would mean that we will have a long turn-around time (code, compile, deploy and test) for our development. Our build process with Ant does not support "naked" deployment", so it takes ages before the artefacts are built, jarred and can be deployed in Weblogic. In case that you only change one small thing in your web layer (JSP file, Java class) you will need to go through all those build steps. In combination that at that time I had an old development hardware (3 years old) you can imagine how horrible the situation was...&lt;br /&gt;&lt;br /&gt;So I was searching for a better solution. We need a fast turn around time, especially in our web layer because I'm not an expert in JFormular and I definitely need to "try and error". At that moment I already know how easy to develop with &lt;a href="http://code.google.com/intl/de-DE/webtoolkit/overview.html"&gt;GWT in hosted mode&lt;/a&gt;. You are just doing "ctrl-s" in Eclipse and make a reload on your browser. That's it, you will see all the changes directly. So your turn around process is just code, compile and test. No deployment anymore. You are very productive in this style. Amazing!&lt;br /&gt;&lt;br /&gt;Luckily I found &lt;a href="http://www.oracle.com/technology/products/enterprise-pack-for-eclipse/index.html"&gt;Oracle Enterprise Pack for Eclipse&lt;/a&gt; (OEPE) in combination with Weblogic &lt;a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/e13702/deployunits.htm#i1054385"&gt;FastSwap technology&lt;/a&gt;. With these stuffs you can do the GWT development style for JSP and any other web frameworks within your Eclipse as well. Not for all the things but it works very well. So after I found this I was thinking of making a new application architecture for our new project and here is the result:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;1. Modeling strategies and technologies: &lt;/span&gt;UML2 (&lt;a href="http://www.magicdraw.com/"&gt;MagicDraw&lt;/a&gt; 16) with &lt;a href="http://www.openarchitectureware.org/"&gt;oAW&lt;/a&gt; generators. Actually I'm a fan of &lt;a href="http://www.andromda.org/"&gt;AndroMDA&lt;/a&gt; (yeah AndroMDA is a great Open Source project!), but because of certain circumstances we move to oAW (it was not my decision). From the application developer point of view I just need to generate the codes from the UML2 models. Nothing special here. In the mean time MagicDraw is becoming a very solid UML product. One thing which still needs some improvements is the file format (XMI) management. Since MagicDraw does not save the UML file in the native Eclipse UML file format you always need to export the  file before it can get processed by oAW or AndroMDA. The export can take time if you have a big UML file.&lt;br /&gt;&lt;br /&gt;I have to admit that my vision of "the next step in software development is reusing model components" is still not there. Four years after I wrote my &lt;a href="http://lofidewanto.blogspot.com/2007/02/mda-book-in-german-language-my-first.html"&gt;MDA book&lt;/a&gt; I still don't see any movement that we are beginning to reuse models. But still it would be very cool if I need to have a user management component I can just import an UML2 user management module in my UML2 application module, afterwards I can customize the model und regenerate everything. At the end I can get a running application with a complete user management which is customized&lt;br /&gt;for my application. Very cool but not a reality yet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;2. Implementation technologies:&lt;/span&gt; Oracle10g database, Weblogic 10.3, Hibernate 3.x.x, SpringFramework 2.x.x, JFormular (our own development for web framework):&lt;br /&gt;&lt;br /&gt;I'm using &lt;a href="http://www.oracle.com/technology/products/database/xe/index.html"&gt;OracleXE&lt;/a&gt; for development which is very good. Only for the integration test we use Oracle10g.&lt;br /&gt;&lt;br /&gt;Weblogic 10.3 is a very solid software. There are some new things which I like in comparison with the older 8.1. Here are some points:&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Support for FastSwap&lt;/span&gt;: This is great. In combination with OEPE (see below) you just make ctrl-s and reload on your browser and you will see the changes directly. Amazing, especially for development of web user interfaces. You also won't lose your session in the web application. So if you have an application in which you have to log in, you don't need to log in everytime you change something in your web application because your session is still there. There are some &lt;a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/e13702/deployunits.htm#i1054385"&gt;contrains in FastSwap&lt;/a&gt; but all in all you can life very good with FastSwap.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;User interface&lt;/span&gt; of Weblogic 10.3 is a lot more better than the older version. Still you have a &lt;a href="http://lofidewanto.blogspot.com/2009/06/bug-in-chrome-2.html"&gt;bug if you are using Chrome&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;You can&lt;span style="color: rgb(0, 102, 0);"&gt; start Weblogic in a very slim version&lt;/span&gt; (without EJB, etc.), thanks to OSGi architecture of Weblogic. This is great if you just want to make a simple development with servlet.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;3. Project structure and build process: &lt;/span&gt;&lt;a href="http://maven.apache.org/"&gt;Maven2&lt;/a&gt;. Actually I'm not fond of Maven2 because I always thought "I need my freedom and flexibility". I don't want to be dictated by a common structure and standard phases like in Maven. My project has always something specials so I need my own Ant task to get the flexiblity I need. &lt;span style="color: rgb(102, 0, 0);"&gt;I'm wrong, very wrong&lt;/span&gt;. After doing some stuffs in Maven2 I began to really like it. A very great build tool. I will never ever do my project without it again! Following points are the reason why I like Maven2:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; The &lt;span style="color: rgb(0, 102, 0);"&gt;documentations &lt;/span&gt;of all those plugins are great. You can always find solutions to your problem in internet (I already forget how to do programming without internet ;-))&lt;/li&gt;&lt;li&gt;You have two&lt;span style="color: rgb(0, 102, 0);"&gt; great free Maven books&lt;/span&gt; which are very nice in case that you will need to understand something principally in Maven2 (&lt;a href="http://www.sonatype.com/products/maven/documentation/book-defguide"&gt;Maven: The Definitive Guide&lt;/a&gt; and &lt;a href="http://www.topazproject.org/trac/attachment/wiki/MavenInfo/BetterBuildsWithMaven.pdf?format=raw"&gt;Better Builds with Maven&lt;/a&gt;). Something like Assembly or Profile for example.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And why is &lt;span style="color: rgb(0, 102, 0);"&gt;Maven2 should be your choice&lt;/span&gt; (instead of pure Ant)? Here are some reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; You can still use Ant in Maven2, so you actually don't lose your flexibility!&lt;/li&gt;&lt;li&gt;I already see some hand-written Ant tasks. OK you can surely standardized them all but almost all of them are just re-written of Maven goals (compile, test, package, install, deploy). So mostly they are quite useless. Especially in a small team of developers this is not applicable since one person needs to take care and always extend the build files. Did you ever try to extend Ant tasks which are not written by yourself? Have fun! Another thing is that in a lot of cases you will have to use the dependency management of Maven in Ant, so you are beginning using Ant task for Maven anyway. In this case just throw your Ant tasks away and &lt;span style="color: rgb(0, 0, 153);"&gt;start using Maven2&lt;/span&gt;. You can still integrate some of your Ant tasks directly in Maven2.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;One thing I still don't like is the Maven2 Eclipse plugin&lt;/span&gt;. Yes this plugin is still buggy. After a long time of its existence it's a pitty that there is still no good Maven2 plugin for Eclipse. For more info - or problem - on Maven2 Eclipse plugin please continue reading.&lt;br /&gt;&lt;br /&gt;Here is a list of topics which I found very useful during my first contact with Maven2:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Introductory article at JavaWorld: &lt;a href="http://www.javaworld.com/javaworld/jw-12-2005/jw-1205-maven.html"&gt;An Introduction to Maven 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Maven2 with Weblogic 10.3: &lt;a href="http://mohanrajk.wordpress.com/2009/03/02/weblogic-103-and-maven-integration"&gt;Integration&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SpringFramework, Hibernate, Maven2, EasyMock, etc.: &lt;a href="http://code.google.com/p/gridshore"&gt;Gridshore: Open Source Software Development by Example&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;4. IDE: Eclipse 3.4.x with OEPE and Maven2 plugins:&lt;/span&gt; OEPE offers you a lot of good functionalities (starting, stopping server, some editors for Weblogic stuffs, etc.). One I really like is the FastSwap technology. At the moment some developers are using a remote installation of Weblogic 10.3. It's a pitty that FastSwap only supported for a local installation of Weblogic. I don't know if FastSwap is working for a remote installation with a Samba access. Maybe worth to try.&lt;br /&gt;&lt;br /&gt;In conjunction with Maven2 Eclipse plugin there are some bugs still available. If you are seperating your presentation layer (web war) and your business layer (jar) in two different Eclipse projects &lt;span style="color: rgb(102, 0, 0);"&gt;you can't have the FastSwap technique in your business layer&lt;/span&gt;. &lt;span style="color: rgb(102, 0, 0);"&gt;You also cannot use the&lt;/span&gt; &lt;span style="color: rgb(102, 0, 0);"&gt;Maven2 plugin functionality "Resolve Dependencies within Eclipse IDE"&lt;/span&gt; which is actually pretty cool. So you always need to "install" the business jar file into your local Maven repository. Your web application needs to link this jar file directly. See this discussion for this type&lt;br /&gt;of bug: &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=3673967"&gt;M2Plugin and OEPE&lt;/a&gt;. I hope to see bug fixes for all these problems, so that we can use FastSwap also in our business layer like with SpringFramework, etc.&lt;br /&gt;&lt;br /&gt;I also found that this Eclipse plugin is a good one (not a perfect one) to see changes of your Weblogic or your application log files: &lt;a href="http://graysky.sourceforge.net/"&gt;Log Watcher&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;All in all, with all its bugs, OEPE and Weblogic FastSwap are great technologies and if you are using Weblogic you have to try these stuffs. You will never ever want to comeback to your old development process and steps.&lt;/span&gt; &lt;span style="color: rgb(102, 0, 0);"&gt;One thing to remember: Using FastSwap does not mean that you don't need to write unit tests anymore!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;FastSwap is a beautiful technology to quickly prototype applications and &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;unit tests are there for you to be able to deliver high quality applications. So the combination of both is just what you need!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;One thing I want to replace in our application is JFormular web framework. Maybe it was a good framework in the past but today I won't develop a new application with that framework anymore. GWT would be a better choice for web user interface.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I'm beginning to write some HOW-TOs and project examples for working with Eclipse, Maven2, M2Eclipse, OEPE, WLS 10.3 and FastSwap.&lt;/li&gt;&lt;li&gt;Here is a short introductory &lt;a href="http://lofidewanto.blogspot.com/2009/11/how-to-oepe-with-maven2-and-m2eclipse.html"&gt;&lt;span style="font-weight: bold;);"&gt;HOW-TO: OEPE - FastSwap with Maven2 and M2Eclipse Plugin.&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Have fun and be productive!&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-5191363853461143005?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/5191363853461143005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=5191363853461143005' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/5191363853461143005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/5191363853461143005'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/09/one-day-in-your-life.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-5367308946727465368</id><published>2009-07-02T23:04:00.000-07:00</published><updated>2009-07-03T06:07:17.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='wave protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='wave'/><category scheme='http://www.blogger.com/atom/ns#' term='open wave'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;Bye bye SMTP - Welcome Wave Protocol&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's very interesting to see that Google has developed a new protocol for e-mail, yes SMTP is just too old and boring, Wave protocol will come  soon - at least we already have one provider who will implement this new  protocol, I call it as a "reference provider", yes, it's Google Wave &lt;span class="moz-smiley-s1"&gt;&lt;span&gt; :-) &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Okay before I begin with this story, one thing we need to know:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"Wave is just a protocol (&lt;/span&gt;&lt;a style="font-weight: bold;" class="moz-txt-link-freetext" href="http://www.waveprotocol.org/"&gt;http://www.waveprotocol.org&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;), a specification,  just like SMTP, HTTP, HTML, TCP/IP, OpenID, OAuth, OpenSocial, etc. This  means that everyone can implement this protocol to build some new  products based on it".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"Google Wave (&lt;/span&gt;&lt;a style="font-weight: bold;" class="moz-txt-link-freetext" href="http://wave.google.com/"&gt;http://wave.google.com&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;) is an implementation of the Wave  protocol". A Google product which supports Wave protocol. I also call Google Wave as a reference implementation and  reference provider of the Wave protocol.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you want to understand the terminology in Wave protocol, please check out this article: &lt;a href="http://mashable.com/2009/05/28/google-wave-guide/"&gt;Google Wave: A Complete Guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;OK, with those information in the background we can start our discussion...&lt;br /&gt;&lt;br /&gt;The big question for me is whether other e-mail providers like YAHOO!, GMX, Web.de, Lycos, etc. will also support this new Wave protocol. IMO this depends on the acceptance of the reference provider within the consumers. If Google Wave can attract a lot of people, all other e-mail providers will slow but surely become less important and their customers will leave them. Who cares to use that old e-mail, boring stuffs? &lt;a href="http://www.techcrunch.com/2009/05/28/google-wave-drips-with-ambition-can-it-fulfill-googles-grand-web-vision/"&gt;The advantages of Wave protocol against SMTP are quite clear&lt;/a&gt;. And this is the point where they will also have to implement and add the new Wave protocol in their products.&lt;br /&gt;&lt;br /&gt;What kind of impacts do we have from Wave protocol alltogether?&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;1. &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Technically we don't need to have client applications &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;like e-mail SMTP client applications (Outlook, Thunderbird, etc.) since Wave is being designed for web applications.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Maybe there will be some Wave client applications (WaveEagle at Mozilla?) but this is not a must. Yeah, Microsoft Outlook will have to do some diets &lt;span class="moz-smiley-s3"&gt;&lt;span&gt; ;-) &lt;/span&gt;&lt;/span&gt; Throw all those e-mail stuffs away. Just embed Internet Explorer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;2. &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;We will see some new providers playing and fighting for market share&lt;/span&gt;. Yes, the "pie" will be open for everyone, come and join Wave protocol  and develop your own Wave product. Yes, we can start from the beginning!  Web.de, GMX, YAHOO! will still play a role but it can happen that...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Google Wave will get the most customers because their implementation  is the first at the market. Marketing people know this as "first mover  effect".&lt;/li&gt;&lt;li&gt;A newcomer "Swiss Inc." from Switzerland will get a lot of customers  because their Wave protocol implementation is the most secure one. Yes,  nobody can get access to their servers, also not their own goverment  since they have their "Wave secret".&lt;/li&gt;&lt;li&gt;"WaveSign" (from V...Sign) offers you a real identity. It means that they will check  you offline first, whether you are "the really" Lofi Dewanto before you  can get a new Wave account. So everyone gets a Wave from this provider  can be sure that the person really exists and the identity is checked.&lt;/li&gt;&lt;li&gt;It is possible to have "HotWave" (from M..., you know what I mean)  rules the Wave world, because it is directly integrated within their  operating system. All those Wavelets are directly integrated in the  background screen and their widgets, not bad...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So, to all providers, let's get rumble...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;3. &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;How about spammer?&lt;/span&gt; Spammer will still find their way to "wave-spam".  Please check out &lt;a class="moz-txt-link-freetext" href="http://www.wavespam.net/"&gt;http://www.wavespam.net&lt;/a&gt;. You can get a wave account  easily there, no identity check, nothing and of course you can use it to  wave-spam everyone.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;4. &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;How are the business model(s) of those OpenWave providers?&lt;/span&gt; These  won't change a lot. Just take a look those SMTP providers today. How can  you earn money with consumer web applications today? Nothing. OK,  I give up, ... advertisements, ads, and ads, ... &lt;span class="moz-smiley-s1"&gt;&lt;span&gt; :-) &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I personally like the new Wave protocol and it's the time to throw away  SMTP, so folks let's get started!&lt;br /&gt;&lt;br /&gt;Just my 2 cents, happy Wavy!&lt;br /&gt;Lofi.&lt;br /&gt;&lt;br /&gt;BTW. here are some links on Wave protocol and Google Wave in German language:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://de.wikipedia.org/wiki/Google_Wave"&gt;Wave protocol described in German language&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.welt.de/videos/webwelt/article3827353/Google-Wave-die-Zukunft-der-E-Mail.html"&gt;Video about Wave in German language Welt.de&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.chip.de/news/Google-Wave-Werden-Outlook-Co.-ueberfluessig_36691346.html"&gt;Google Wave: Werden Outlook &amp;amp; Co. überflüssig?&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-5367308946727465368?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/5367308946727465368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=5367308946727465368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/5367308946727465368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/5367308946727465368'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/07/bye-bye-smtp-welcome-wave-protocol-its.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-8665871224737146303</id><published>2009-07-02T04:07:00.000-07:00</published><updated>2009-07-02T04:15:22.820-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='springframework'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='transaction'/><category scheme='http://www.blogger.com/atom/ns#' term='session'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Transaction Management and Hibernate Session&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;s&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;This is a very good description of Hibernate Sessions from Atlassian: &lt;a href="http://confluence.atlassian.com/display/DOC/Hibernate+Sessions+and+Transaction+Management+Guidelines"&gt;Transaction Management and Hibernate Sessions Guidelines&lt;/a&gt;.&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Cheers,&lt;br /&gt;Lofi.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-8665871224737146303?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/8665871224737146303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=8665871224737146303' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/8665871224737146303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/8665871224737146303'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/07/transaction-management-and-hibernate.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-7089499229102288036</id><published>2009-06-19T00:40:00.000-07:00</published><updated>2009-06-19T01:11:01.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic console'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;Bug in Chrome&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; 2.0.x.x: Weblogic Console 10.3.x.x&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you are working with Oracle Weblogic console 10.3.x.x and you are using Chrome 2.0.x.x you won't be able to see the "advanced tabs" on the bottom of every pages of the console.&lt;br /&gt;&lt;br /&gt;In some pages of the Weblogic console you can see at the bottom an "advanced tab" which can be opened by clicking on it. The tab will open smoothly in Firefox. Only in Chrome you won't see this tab, as if it were not existing at all. Just take a look at the two screenshots below (comparison between Firefox and Chrome 2.0.x.x for the same page).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;Chrome 2.0.x.x - no "Advanced" tab:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lofidewanto.googlepages.com/chrome-noadvanced.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://lofidewanto.googlepages.com/chrome-noadvanced.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;Firefox 3 - with "Advanced" tab:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lofidewanto.googlepages.com/firefox-advanced.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://lofidewanto.googlepages.com/firefox-advanced.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So be careful and use Firefox for Oracle Weblogic 10.3.x.x console...&lt;br /&gt;&lt;br /&gt;Cheers!&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-7089499229102288036?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/7089499229102288036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=7089499229102288036' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/7089499229102288036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/7089499229102288036'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/06/bug-in-chrome-2.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-7533675605859594878</id><published>2009-06-14T23:56:00.000-07:00</published><updated>2009-06-14T23:59:51.285-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RoR'/><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;Nice Blogs about &lt;span style="color: rgb(0, 102, 0);"&gt;Java vs. RoR&lt;/span&gt; and &lt;span style="color: rgb(0, 102, 0);"&gt;GWT&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;/GAE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some interesting blogs:&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.pardontheinformation.com/2008/09/java-vs-ruby-on-rails-it-is-dead-heat.html"&gt;Java vs. Ruby on Rails - It is a Dead Heat&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tomuse.com/google-app-engine-java-microblog-development-review/?dzref=192826"&gt;Google App Engine For Java - Microblogging Case Study&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-7533675605859594878?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/7533675605859594878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=7533675605859594878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/7533675605859594878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/7533675605859594878'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/06/nice-blogs-about-java-vs.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-1907169500719397869</id><published>2009-06-11T23:53:00.000-07:00</published><updated>2009-06-12T05:02:02.270-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='use case'/><category scheme='http://www.blogger.com/atom/ns#' term='UCP'/><category scheme='http://www.blogger.com/atom/ns#' term='anwendungsfälle'/><category scheme='http://www.blogger.com/atom/ns#' term='ejosa'/><category scheme='http://www.blogger.com/atom/ns#' term='anwendungsfall'/><category scheme='http://www.blogger.com/atom/ns#' term='cost estimation'/><category scheme='http://www.blogger.com/atom/ns#' term='use cases'/><category scheme='http://www.blogger.com/atom/ns#' term='andromda'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;Use Case Points (UCP) Method&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some interesting articles about UCP method:&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/rational/library/edge/09/mar09/collaris_dekker/index.html"&gt;Software cost estimation using use case points: Getting use case transactions straight&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/rational/library/2870.html"&gt;Dear Dr. Use Case: What About Function Points and Use Cases?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/architecture/usecasep.aspx"&gt;Project Estimation with Use Case Points&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bfpug.com.br/Artigos/UCP/Banerjee-UCP_An_Estimation_Approach.pdf"&gt;Use Case Points - An Estimation Approach&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.akqit.ch/w3/pdf/UseCasePoints.pdf"&gt;Aufwandschätzung mit UseCasePoints (German)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;and... if you are a user of &lt;a href="http://www.andromda.org/"&gt;AndroMDA&lt;/a&gt; and MDA/MDSD in general don't forget to use the UCP cartridge from &lt;a href="http://ejosa.sourceforge.net/"&gt;EJOSA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-1907169500719397869?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/1907169500719397869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=1907169500719397869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/1907169500719397869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/1907169500719397869'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/06/use-case-points-ucp-method-here-are.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-4367733616745672724</id><published>2009-06-07T22:40:00.000-07:00</published><updated>2009-06-07T22:45:04.713-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity Management'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenID'/><category scheme='http://www.blogger.com/atom/ns#' term='openid4java'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;OpenID for Java (openid4java)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is the second part of my article series about OpenID:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;News: &lt;a href="http://www.heise.de/developer/Identity-Management-OpenID-mit-openid4java--/news/meldung/139607"&gt;Identity Management: OpenID mit openid4java&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Article: &lt;a href="http://www.heise.de/developer/Einfuehrung-in-die-OpenID-Java-Bibliothek-openid4java--/artikel/138114"&gt;Tief in der Traumwelt&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Enjoy reading!&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-4367733616745672724?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/4367733616745672724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=4367733616745672724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/4367733616745672724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/4367733616745672724'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/06/openid-for-java-openid4java-this-is.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-6513442920643205845</id><published>2009-06-07T22:31:00.000-07:00</published><updated>2009-06-07T22:39:34.453-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bürgerportale'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='wave'/><category scheme='http://www.blogger.com/atom/ns#' term='open wave'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;Google Wave and Open Wave Protocol&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's very interesting to see that Google tries to build a new email system: &lt;a href="http://www.waveprotocol.org/"&gt;Open Wave Protocol&lt;/a&gt;. They could be successful since email protocol is just too old. Just take a look for example how people in Germany try to extend email to become secure: &lt;a href="http://www.bundesregierung.de/Content/DE/Magazine/MagazinSozialesFamilieBildung/064/t6-mit-buergerportalen-fuer-sichere-und-verbindliche-elektronische-kommunikation.html"&gt;Bürgerportale&lt;/a&gt;. They try to stick to the old protocol and extend it with many extensions. Oh my dear...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-6513442920643205845?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/6513442920643205845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=6513442920643205845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/6513442920643205845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/6513442920643205845'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/06/google-wave-and-open-wave-protocol-its.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-5571272442847884941</id><published>2009-04-21T13:30:00.000-07:00</published><updated>2009-04-21T13:53:01.769-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OAuth'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity Management'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenID'/><category scheme='http://www.blogger.com/atom/ns#' term='Identitätsmanagement'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise'/><category scheme='http://www.blogger.com/atom/ns#' term='openid4java'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;Internet Identity Management 2.0 (OpenID, OAuth and co.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I began to write an article series in german language about Internet Identity Management 2.0. In this series I will cover OpenID, OAuth and co. Also - as usual - I will take a look at some Java libraries which are made to implement the specifications of those technologies.&lt;br /&gt;&lt;br /&gt;This is the part one at &lt;a href="http://www.heise.de/developer"&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;heise.de&lt;/span&gt; Developer Channel&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sigs.de/publications/os/2009/02/dewanto_egger_OS_02_09.pdf"&gt;&lt;/a&gt;&lt;a href="http://www.heise.de/developer/Identity-Management-Authentifizierungsdienste-mit-OpenID--/artikel/136222"&gt;Internet-Identität und Datenaustausch heute - Nutzung und Möglichkeiten von OpenID und OAuth&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy reading!&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-5571272442847884941?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/5571272442847884941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=5571272442847884941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/5571272442847884941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/5571272442847884941'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/04/internet-identity-management-2.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-7950070129220744068</id><published>2009-02-25T13:07:00.000-08:00</published><updated>2009-02-25T13:27:23.157-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PLSE Product Line Open Source ProMI mdaVOFI VOFI Financial Planning'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;Product Line Software Engineering and Open Source Article in OBJEKTspektrum Magazine March/April 2009&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At the end Frank and I managed to publish an article in OBJEKTspektrum magazine (March/April 2009) about PLSE in German language. In this article you can read the development of our software product line: ProMI...&lt;br /&gt;&lt;a href="http://www.sigs.de/publications/os/2009/02/dewanto_egger_OS_02_09.pdf"&gt;&lt;br /&gt;Produktlinien-Softwaretechnik mit Open-Source-Produkten&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;"Mit der wachsenden Größe und Komplexität von IT-Systemen gewinnt die Wiederverwendung von Software immer mehr an Bedeutung. Hier versucht die Produktlinien-Softwaretechnik einen Beitrag zur Verbesserung der Wiederverwendung zu leiten. Anhand von praktischen Beispielen verdeutlicht dieser Artikel, wie Software-Produktlinien entstehen und mit Hilfe von Open-Source-Produkten einfach realisiert werden können. Zudem werden sieben "Best Practices" vorgestellt, die sinnvolle Unterstützung beim Einsatz der Produktlinien-Softwaretechnik geben."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Have fun!&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-7950070129220744068?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/7950070129220744068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=7950070129220744068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/7950070129220744068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/7950070129220744068'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2009/02/product-line-software-engineering-and.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-8081289596416191528</id><published>2008-09-18T12:54:00.000-07:00</published><updated>2009-03-23T13:26:19.336-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deutsche post'/><category scheme='http://www.blogger.com/atom/ns#' term='spring dm. spring osgi'/><category scheme='http://www.blogger.com/atom/ns#' term='guice'/><category scheme='http://www.blogger.com/atom/ns#' term='dependency injection'/><category scheme='http://www.blogger.com/atom/ns#' term='dependency management'/><category scheme='http://www.blogger.com/atom/ns#' term='ioc'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='deutschepost'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Dependency Management for Developers and Spring dm / SpringSource dm Server - An Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I gave a short presentation about &lt;span style="font-style: italic;"&gt;Google Guice and OSGi&lt;/span&gt; at Deutsche Post Com GmbH (in German language). You can download the PDF file of my presentation from the link below:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lofidewanto.googlepages.com/DependencyManagement.pdf"&gt;Dependency Management for Developers - An Introduction (PDF file)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The second part of my presentation (also in German language) about Spring dm for OSGi and SpringSource dm Server can be downloaded from the link below:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lofidewanto.googlepages.com/Dewanto-Springdm.pdf"&gt;Spring dm for OSGi and SpringSource dm Server - An Introduction (PDF file)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will also upload the whole examples in form of Eclipse workspaces, so stay tuned!&lt;br /&gt;&lt;br /&gt;Have fun!&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-8081289596416191528?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/8081289596416191528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=8081289596416191528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/8081289596416191528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/8081289596416191528'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2008/09/dependency-management-for-developers.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-3734954562815042833</id><published>2007-06-11T13:59:00.000-07:00</published><updated>2007-06-13T13:16:32.281-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perpustakaan nasional'/><category scheme='http://www.blogger.com/atom/ns#' term='pustakawan'/><category scheme='http://www.blogger.com/atom/ns#' term='librarian'/><title type='text'></title><content type='html'>&lt;b style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Article: Pengukuhan Pustakawan Utama - Pustakawan Dituntut Lebih Profesional&lt;/b&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;There is an article about &lt;span style="color: rgb(0, 0, 153);"&gt;National Library Indonesia&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;:&lt;/span&gt; Librarians in Indonesia should be more professional in their work&lt;/span&gt;. Check out this  important article below:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pnri.go.id/official_v2005.5/activities/news/index.asp?box=detail&amp;amp;id=200766152551"&gt;Article about Pustakawan Utama&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-3734954562815042833?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/3734954562815042833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=3734954562815042833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/3734954562815042833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/3734954562815042833'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2007/06/article-pengukuhan-pustakawan-utama.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-7024059645811754901</id><published>2007-06-11T11:40:00.000-07:00</published><updated>2007-06-13T13:31:38.747-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architectureware'/><category scheme='http://www.blogger.com/atom/ns#' term='mda'/><category scheme='http://www.blogger.com/atom/ns#' term='book mda'/><category scheme='http://www.blogger.com/atom/ns#' term='mdsd'/><category scheme='http://www.blogger.com/atom/ns#' term='sculptor'/><category scheme='http://www.blogger.com/atom/ns#' term='andromda'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;MDSD/MDA Frameworks: AndroMDA Cartridges vs. Sculptor &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's quite amazing to see the same things happen again and again...  &lt;span style="color: rgb(204, 0, 0);"&gt;Reinventing the wheel seems is the way in computer science to make  things better &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);" class="moz-smiley-s3"&gt;&lt;span&gt; ;-)  &lt;span style="color: rgb(0, 102, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;To begin this blog with, which is a comment of &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=45698"&gt;the discussion in TSS about Sculptor&lt;/a&gt;: The idea of Sculptor is not new, also ArchitectureWare is  not new... MDA/MDSD is not new as well...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;Here are my opinions about Sculptor and AndoMDA and general about MDSD/MDA:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;(1)&lt;/span&gt; I'm a &lt;span style="color: rgb(0, 0, 153);"&gt;very satisfied&lt;/span&gt; user of AndroMDA. AndroMDA is a very good  framework for MDSD/MDA and is just comparable with ArchitectureWare. The  latter is the framework in which Sculptor is written.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;(2)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;Sculptor &lt;/span&gt;is comparable with &lt;span style="color: rgb(0, 0, 153);"&gt;AndroMDA Cartridges&lt;/span&gt;, which allow you to  generate codes for its &lt;span style="color: rgb(0, 102, 0);"&gt;reference architecture&lt;/span&gt;. AndroMDA offers a lot of  production-ready cartridges like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java (general purpose)&lt;/li&gt;&lt;li&gt;EJB, Spring, jBPM (business layer)&lt;/li&gt;&lt;li&gt;Struts, JSF (presentation layer)&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;li&gt;And also for .NET!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;All these cartridges are already available since more than 3 years! &lt;span style="color: rgb(0, 102, 0);"&gt;So  they are quite mature&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Here is a very good description of the &lt;a href="http://galaxy.andromda.org/index.php?option=com_content&amp;task=category&amp;amp;sectionid=11&amp;id=42&amp;amp;Itemid=89"&gt;reference architecture in  AndroMDA Cartridges for Java&lt;/a&gt; and here is for &lt;a href="http://galaxy.andromda.org/index.php?option=com_content&amp;task=category&amp;amp;sectionid=12&amp;id=43&amp;amp;Itemid=90"&gt;.NET reference architecture&lt;/a&gt;. And here are &lt;a href="http://www.jaxmagazine.com/itr/news/psecom,id,21908,nodeid,146.html"&gt;two articles&lt;/a&gt; about why using AndroMDA is the way to go.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;(3)&lt;/span&gt; The difference between &lt;span style="color: rgb(0, 0, 153);"&gt;AndroMDA Cartridges&lt;/span&gt; and &lt;span style="color: rgb(0, 0, 153);"&gt;Sculptor&lt;/span&gt; is that  AndroMDA Cartridges use &lt;span style="color: rgb(0, 102, 0);"&gt;UML &lt;/span&gt;as its DSL. Sculptor seems to invent its &lt;span style="color: rgb(153, 0, 0);"&gt;own  text-based DSL&lt;/span&gt;. This would be a very interesting point to discuss. &lt;span style="font-weight: bold;"&gt;My  questions here is: why using a new text-based DSL for implementing &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;" class="moz-txt-star"&gt;business applications&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;?&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;For this purpose UML is the way to go.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Why?  Because:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We have a lot of good UML tools.&lt;/li&gt;&lt;li&gt;A lot of people (also business people) understand UML (or a part of  UML). If you are using a text-oriented DSL you will loose the capability  to talk with the business people.&lt;/li&gt;&lt;li&gt;How is the quality of the editor for Sculptor DSL? I see a lot of good  DSL but almost all of them have a poor editor support. See my &lt;a href="http://lofidewanto.blogspot.com/2007/05/advantages-and-disadvantages-using.html"&gt;blog about  Groovy and unit testing&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;In my experience with DSL using ANTLR it is not easy to design a  clean DSL. It is very difficult to draw the line where you should stop  putting more elements in your DSL. Typical problem: should I put String  operations in my DSL? In the long term you will mimic the "lower" language.&lt;/li&gt;&lt;li&gt;Using UML and its &lt;span style="color: rgb(0, 0, 153);"&gt;extension mechanism&lt;/span&gt; (stereotype, tagged values,  etc.) are mostly enough to handle all your requirements in business  application development.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;(4)&lt;/span&gt; The quality of the generated codes is the important part of choosing  such a framework like AndroMDA Cartridges or Sculptor, since it will  determine the quality of your application architecture:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How many developers have used and reviewed the cartridges and the  generated codes?&lt;/li&gt;&lt;li&gt;How is the generality of the architecture? Will it fit for your needs?&lt;/li&gt;&lt;li&gt;Do I need to extend, change or rewrite the cartridges?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;One thing for sure, you &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;HAVE TO REUSE&lt;/span&gt; the cartridges to become  productive. Changing or rewritting them make &lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;NO SENSE&lt;/span&gt; for a small team!  I have experienced this again and again... Check out my older &lt;a href="http://lofidewanto.blogspot.com/2006/10/reuse-or-rewrite-andromda-cartridges.html"&gt;blog about this phenomenon&lt;/a&gt;. So you have to be able to add  your requirements to the development of the cartridges and this means  that the development team in the cartridge project &lt;span style="font-style: italic; color: rgb(204, 0, 0);"&gt;should not consist a single  developer&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;In my experience I can say that AndroMDA has a very good support. &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;A LOT&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;of  developers &lt;/span&gt;have tried and used their cartridges. The development of AndroMDA cartridges is a &lt;span style="color: rgb(0, 0, 153);"&gt;real Open Source development&lt;/span&gt; and those AndroMDA developers are very active!&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-7024059645811754901?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/7024059645811754901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=7024059645811754901' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/7024059645811754901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/7024059645811754901'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2007/06/mdsdmda-frameworks-andromda-cartridges.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-9207670572116304220</id><published>2007-06-04T01:32:00.000-07:00</published><updated>2007-06-04T02:14:31.913-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;FTP Server in Java (and of course Open Source ;-))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some interesting FTP servers written in Java and Open Source:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.anomic.de/AnomicFTPServer/"&gt;AnomicFTPServer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cftp.coldcore.com/index.html"&gt;ColoradoFTP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://javasecureftpd.sourceforge.net/"&gt;JavaSecureFTPd&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/ftpserver/index.html"&gt;Apache FTP Server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cellspark.com/ftpserver.html"&gt;FTPGo Server&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;A list of available FTP servers (not only Open Source and Java) can be found in these sites:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.answers.com/topic/list-of-ftp-servers"&gt;Answer.com FTP Servers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.java-tips.org/java-applications/ftp-server/"&gt;JavaTips.org&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;It would be nice to have a complete comparison between all those available products because at the end you would only choose &lt;span style="font-style: italic;"&gt;one &lt;/span&gt;product!&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-9207670572116304220?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/9207670572116304220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=9207670572116304220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/9207670572116304220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/9207670572116304220'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2007/06/ftp-server-in-java-and-of-course-open.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-6703312710033446193</id><published>2007-05-24T00:02:00.000-07:00</published><updated>2007-05-24T00:32:52.032-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse.ini'/><category scheme='http://www.blogger.com/atom/ns#' term='settings'/><category scheme='http://www.blogger.com/atom/ns#' term='file'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;The &lt;span style="font-family:courier new;"&gt;eclipse.ini&lt;/span&gt; File "Hell"...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;If you want to change some settings in your Eclipse 3.2.x you have two choices:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Use the extra settings in your command line, something like &lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;eclipse -vm ... -vmargs ...&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Put the extra settings into the &lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;eclipse.ini&lt;/span&gt; file, something like:&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;-vm&lt;br /&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;-vmargs&lt;br /&gt;...&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;If you put your extra settings into the &lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;eclipse.ini&lt;/span&gt; file you have to be careful: &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Do not insert an empty line at the end of your &lt;span style="font-family:courier new;"&gt;eclipse.ini&lt;/span&gt; file&lt;/span&gt;. If you do this Eclipse will completely ignore your settings!&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Lofi.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-6703312710033446193?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/6703312710033446193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=6703312710033446193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/6703312710033446193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/6703312710033446193'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2007/05/eclipse.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-8042699598226215782</id><published>2007-05-02T01:30:00.000-07:00</published><updated>2007-05-10T00:34:00.351-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mdsd'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='junit'/><category scheme='http://www.blogger.com/atom/ns#' term='unit test'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;Advantages and Disadvantages using Groovy for Unit Test (JUnit)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I'm collecting the &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;advantages &lt;/span&gt;and &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;disadvantages &lt;/span&gt;using &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;Groovy for JUnit&lt;/span&gt;&lt;/span&gt; and found following interesting stuffs...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Advantages:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You don't need to implement &lt;span style="font-style: italic;"&gt;inner classes&lt;/span&gt; which are very awful and &lt;span style="font-style: italic;"&gt;bloat &lt;/span&gt;your test codes. Instead you can use &lt;a href="http://groovy.codehaus.org/Closures"&gt;closures&lt;/a&gt;. Using closures for writing your &lt;a href="http://en.wikipedia.org/wiki/Mock_object"&gt;mock objects&lt;/a&gt; can make your test codes &lt;span style="font-style: italic;"&gt;smaller &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;more compact&lt;/span&gt;!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;File operations are very easy to implement thanks to &lt;a href="http://groovy.codehaus.org/Ant+Scripting"&gt;AntBuilder&lt;/a&gt;. How many times do you need to make some file operations (delete, mkdir, ...) within your test codes? Doing this with&lt;span style="font-size:85%;"&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;java.io&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is not fun at all. Using AntBuilder for this purpose is a good thing, since Ant is predestinated to do this job. If you think that you could do the same thing in pure Java, you will find that this takes a lot more work. &lt;a href="http://ant.apache.org/manual/antexternal.html"&gt;Using Ant directly in Java&lt;/a&gt; is unfortunately not straight forward. &lt;span style="font-style: italic;"&gt;Example: &lt;/span&gt;to use the &lt;span style="font-family: courier new;"&gt;unzip &lt;/span&gt;Ant task you need to use the &lt;span style="font-family: courier new;"&gt;Expand &lt;/span&gt;Java class, which is not documented properly (so you need to dig into the Java source code). In AntBuilder you just use the same structure like your Ant file: &lt;span style="font-family: courier new;"&gt;unzip&lt;/span&gt;!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you are using SpringFramework you can easily create the config files (application context) by using &lt;a href="http://grails.codehaus.org/Spring+Bean+Builder"&gt;BeanBuilder&lt;/a&gt;. By using this concept you don't need to put separate XML files in your test project. Everything is &lt;span style="font-style: italic;"&gt;integrated &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;centralized &lt;/span&gt;in your test class!&lt;/li&gt;&lt;li&gt;If you are using Ant for your build environment, you can integrate the compilation of Groovy classes easily since Groovy also offers an Ant task.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Disadvantages:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;No source code formatter for Groovy: This is a real disadvantage for Groovy at the moment. If you are working in a team this could be a nightmare: reading the code with different formatting, CVS compare is difficult, ... are some examples to mention...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The Groovy plug-ins (code completion, syntax coloring, ...) - at least for Eclipse - is still very buggy.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You need to learn some new concepts like: &lt;span style="font-style: italic;"&gt;closures &lt;/span&gt;- which is also &lt;span style="font-style: italic;"&gt;an advantage&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;after you understand them!&lt;/span&gt; Without closures you cannot implement inner classes in Groovy, which are mostly a must in writing unit tests.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The good thing about using Groovy for your unit tests is that &lt;span style="font-weight: bold; font-style: italic; color: rgb(0, 0, 153);"&gt;you don't have to make the choice between Java and Groovy at one time&lt;/span&gt;! You can move slowly from Java to Groovy - of cource if you feel that you are more productive using Groovy to write your unit tests -  as you wish and &lt;span style="font-weight: bold;"&gt;mix Java and Groovy unit tests&lt;/span&gt; in the same project!&lt;br /&gt;&lt;br /&gt;A good place to start for Groovy and Testing is right here: &lt;a href="http://groovy.codehaus.org/Testing+Guide"&gt;Groovy Testing Guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you have some points to add please let me know!&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-8042699598226215782?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/8042699598226215782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=8042699598226215782' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/8042699598226215782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/8042699598226215782'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2007/05/advantages-and-disadvantages-using.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-2512984831385602729</id><published>2007-03-18T01:58:00.000-07:00</published><updated>2007-03-18T02:11:21.497-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pharmacy'/><category scheme='http://www.blogger.com/atom/ns#' term='apotik'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;A good Article about Indonesian Pharmacy System&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.mediakonsumen.com/Artikel394.html"&gt;&lt;br /&gt;Harapan Baru Dari Pergantian Kepala Badan POM&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hope to see something different after the head of POM replacement!&lt;br /&gt;&lt;br /&gt;Happy reading,&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-2512984831385602729?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/2512984831385602729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=2512984831385602729' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/2512984831385602729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/2512984831385602729'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2007/03/good-article-about-indonesian-pharmacy.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-3968274586287117073</id><published>2007-02-28T12:51:00.000-08:00</published><updated>2007-02-28T13:36:51.577-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bonner runde'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'></title><content type='html'>&lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt;Bonner-Runde 26th. of February 2007 in Bonn&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;It was an interesting night in a round table presentation and discussion in Bonn, known as&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span style="font-style: italic;"&gt;"Bonner Runde"&lt;/span&gt; which is managed by itemis GmbH. At this time, we - &lt;span style="font-style: italic;"&gt;Wolfgang&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Andreas &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;I&lt;/span&gt; - showed an introductory topic in AJAX: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://www.itemis.de/veranstaltungen/2693/bonner-runde-ajax-grundlagen-und-implementierungsansaetze.html"&gt;&lt;span&gt;AJAX - Grundlagen und Implementierungsansätze&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-style: italic;"&gt;"AJAX - Basics and Implementation Approaches"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We showed three different approaches of AJAX:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Using AJAX-enabled JSF components (ICEfaces) with Sun Java Studio Creator&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;Using &lt;/span&gt;&lt;span style="font-style: italic;"&gt;hardcore &lt;/span&gt;JavaScript&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Using &lt;a href="http://xml11.org/"&gt;XML11&lt;/a&gt; - Cross Compilation from Java to JavaScript&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;At the same time we also explained classification criteria and characteristics for AJAX implementation approaches.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;For more information please download the presentation files:&lt;/span&gt;&lt;br /&gt;(1) AJAX - Grundlagen und Implementierungsansätze&lt;br /&gt;&lt;a href="http://lofidewanto.googlepages.com/AJAXinAction-BonnerRunde.pdf"&gt;http://lofidewanto.googlepages.com/AJAXinAction-BonnerRunde.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(2) XML11 - AJAX without JavaScript&lt;br /&gt;&lt;a href="http://lofidewanto.googlepages.com/xml11-BonnerRunde-070226.pdf"&gt;http://lofidewanto.googlepages.com/xml11-BonnerRunde-070226.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Have fun!&lt;br /&gt;Lofi&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-3968274586287117073?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/3968274586287117073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=3968274586287117073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/3968274586287117073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/3968274586287117073'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2007/02/bonner-runde-26th.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-1415012652029231225</id><published>2007-02-10T05:02:00.000-08:00</published><updated>2007-10-07T14:54:46.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book mda'/><category scheme='http://www.blogger.com/atom/ns#' term='mdsd'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='vofi'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;MDA Book in German Language&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My first book in German language about &lt;span style="font-weight: bold;"&gt;MDA (Model Driven Architecture)&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;VOFI (Visualization of Financial Implications)&lt;/span&gt; is now available:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Anwendungsentwicklung mit Model Driven Architecture&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;– dargestellt anhand vollständiger Finanzpläne&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;This book is my doctor dissertation from the year 2006 and is now published within the series of &lt;a href="http://www.logos-verlag.de/cgi-bin/engtransid?page=Buchreihen/amsis.html&amp;amp;lng=deu&amp;amp;id="&gt;Advances in Information Systems and Management Science from Logos Verlag Berlin&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://lofidewanto.googlepages.com/mdavofi-lofi-cover.pdf"&gt;Cover of the book&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lofidewanto.googlepages.com/mdavofi-lofi-inhaltsverzeichnis.pdf"&gt;Contents of the book&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;The good thing is that I will offer a free download for the PDF version - many thanks to Logos Verlag which makes this possible! So, if you can read German, you are welcome to download it ;-) For this purpose I'm searching some sponsors. As soon as I get some sponsors I'll put the PDF version somewhere in the internet. So, stay tuned!&lt;br /&gt;&lt;br /&gt;If you want to buy it, just order from&lt;br /&gt;&lt;a href="http://www.logos-verlag.de/"&gt;Logos Verlag Berlin&lt;/a&gt;: &lt;span style="font-weight: bold;"&gt;ISBN  978-3-8325-1480-8&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Or go directly to this order site:&lt;br /&gt;&lt;a href="http://logos-verlag.de/cgi-local/buch?isbn=1480"&gt;Order MDA VOFI Book from Logos Verlag Berlin&lt;/a&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Happy reading!&lt;br /&gt;Lofi.&lt;br /&gt;&lt;br /&gt;[updated 01.03.2007]&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(102, 0, 0);"&gt;German&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Anwendungsentwicklung mit Model Driven Architecture&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;– dargestellt anhand vollständiger Finanzpläne&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Die modellgetriebene Anwendungsentwicklung, die von Object Management Group (OMG) als &lt;span style="font-weight: bold;"&gt;Model Driven Architecture (MDA)&lt;/span&gt; standardisiert wurde, nutzt Modelle als Hauptartefakte und zeichnet sich durch hohe Qualität und Produktivität gegenüber quellcodezentrierten Anwendungsentwicklungen aus. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Blasius Lofi Dewanto führt in der vorliegenden Arbeit eine umfassende Untersuchung durch, die die Nutzenpotenziale der MDA für eine anwendernahe und anforderungsgerechte Anwendungsentwicklung betrachtet. Es wird sowohl der Bedarf in der Anwendungsdomäne des Controllinginstrumentes &lt;span style="font-weight: bold;"&gt;VOFI (Vollständiger Finanzplan) &lt;/span&gt;erfasst als auch die Implementierung und Evaluation der Ergebnisse aus Sicht der Entwickler und Endanwender analysiert. Zudem werden die für Entscheider bedeutenden ökonomischen Konsequenzen durch die Verwendung von MDA systematisch aufgeführt.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Aus dem Inhalt&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 153);"&gt;&lt;li&gt;MDA: Grundlagen und Wiederverwendungsansätze&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(0, 0, 153);"&gt;&lt;li&gt;Investitionscontrolling: VOFI, SAP, Corporate Planner und Tabellenkalkulations-programme&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(0, 0, 153);"&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;mdaVOFI&lt;/span&gt;: Modellgetriebenes Konzept für VOFI, Entwicklung der VOFI-Produkt-familie&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(0, 0, 153);"&gt;&lt;li&gt;Evaluation: Entscheidersicht mit TCO-VOFI, Entwickler- und Anwendersicht&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(102, 0, 0);"&gt;English&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 51, 0);"&gt;Application Development &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 51, 0);"&gt;with Model Driven Architecture &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 51, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 51, 0);"&gt; I&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 51, 0);"&gt;n the Domain of Visualization of Financial Implications &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 51, 0);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;Application development using &lt;span style="font-weight: bold;"&gt;Model Driven Architecture (MDA)&lt;/span&gt;, which is standardized by Object Management Group (OMG), uses models as its first class citizen artefacts and allows high quality result in comparison with source code centric application development.&lt;br /&gt;&lt;br /&gt;Dr. Dewanto explains &lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;in this book the potential of MDA for a user-oriented application  development and explains how user requirements can be easily &lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;fullfilled by using MDA. He takes a real-world domain in investment &lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;planning with &lt;span style="font-weight: bold;"&gt;Visualization of Financial Implications (VOFI) &lt;/span&gt;and &lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;implements this domain step-by-step using the method of MDA. At the end &lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;of this book he summarizes the result of his research from user's and &lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;developer's perspective to show where the MDA potentials still need to &lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;be explored. Last but not least he shows an investment analysis using &lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;MDA in software development from a decision maker's view. He emphasizes &lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;in what cases it is financially worthwhile to utilize MDA in a small &lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;software development team.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0); font-weight: bold;"&gt;Content&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 51, 0);"&gt;&lt;li&gt;MDA: Basics and Software Reuse (Reference Modelling, Productline Software Engineering, Architecture and Patterns, Component Based Software Engineering)&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(0, 51, 0);"&gt;&lt;li&gt;Investment Planning: VOFI, SAP, Corporate Planner and Spreadsheet Applications&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(0, 51, 0);"&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;mdaVOFI&lt;/span&gt;: Model Driven Concept for VOFI, Development of VOFI Product Family&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(0, 51, 0);"&gt;&lt;li&gt;Evaluation: decision maker's perspective with TCO-VOFI (Total Cost of Ownership with VOFI), developer's and user's perspective&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-1415012652029231225?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/1415012652029231225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=1415012652029231225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/1415012652029231225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/1415012652029231225'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2007/02/mda-book-in-german-language-my-first.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-115988657522684625</id><published>2006-10-03T07:36:00.000-07:00</published><updated>2006-10-03T08:29:46.206-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Reuse &lt;/span&gt;or &lt;span style="color: rgb(153, 0, 0);"&gt;Rewrite &lt;/span&gt;AndroMDA Cartridges?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Someone asked me what is &lt;span style="color: rgb(0, 102, 0);"&gt;the best way&lt;/span&gt; to work with AndroMDA in case that the architecture (structure, naming, process, etc.) is different than the AndroMDA's one. &lt;span style="font-style: italic; color: rgb(0, 102, 0);"&gt;Reuse&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;all the cartridges as far as possible and extend them or &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;rewrite&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;them from scratch?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My opinions are as follow:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Think of &lt;span style="color: rgb(0, 102, 0);"&gt;&lt;span style="font-weight: bold;"&gt;a framework&lt;/span&gt; &lt;/span&gt;everytime you use &lt;span style="font-weight: bold;"&gt;AndroMDA&lt;/span&gt;. This includes the &lt;span style="color: rgb(0, 102, 0);"&gt;cartridges&lt;/span&gt; AndroMDA offers. When you are using frameworks you mostly &lt;span style="color: rgb(102, 0, 0);"&gt;don't want to rewrite&lt;/span&gt; them. You want to &lt;span style="color: rgb(0, 102, 0);"&gt;&lt;span style="font-weight: bold;"&gt;reuse and extend&lt;/span&gt; &lt;/span&gt;them. So, reuse and extend already available AndroMDA cartridges is the way to go.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;If your team is only a &lt;span style="font-weight: bold;"&gt;small team&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;never think of building your own architecture&lt;/span&gt;, &lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;thus you don't need to rewrite the cartridges&lt;/span&gt;. By building your own architecture (&lt;span style="font-style: italic;"&gt;e.g. using your own directory structure&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;using your own naming convention&lt;/span&gt;, etc.) you mostly need to write your own cartridges which is &lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt;costly&lt;/span&gt;. Remember that the developers of AndroMDA and AndroMDA cartridges &lt;span style="color: rgb(0, 0, 153);"&gt;are &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; beginners&lt;/span&gt;. They had &lt;span style="color: rgb(0, 0, 153);"&gt;many thoughts poured into the cartridges &lt;/span&gt;and most of them are &lt;span style="color: rgb(0, 0, 153);"&gt;experienced architects and developers&lt;/span&gt;. So you can be sure that the architecture of applications generated by AndroMDA cartridges are &lt;span style="font-weight: bold;"&gt;a stable&lt;/span&gt; architecture and has &lt;span style="font-weight: bold;"&gt;a good thought&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Never forget that &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;AndroMDA is an Open Source project&lt;/span&gt;. If you think you have better ideas just join them and give them some inputs to make the available cartridges much more better!&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;So, when should we write our own cartridges?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt; &lt;li&gt;In case that you are doing a &lt;span style="font-style: italic; font-weight: bold; color: rgb(0, 102, 0);"&gt;re-engeneering project&lt;/span&gt; which means that you have all those source codes and you want to integrate AndroMDA cartridges &lt;span style="font-style: italic;"&gt;slowly &lt;/span&gt;into the whole application development process you need to write your own cartridges. In this situation you can slowly "generate" some of the repeating codes by using your own cartridges. Already available AndroMDA cartridges will mostly miss this purpose. &lt;span style="font-weight: bold;"&gt;But again, if you write a &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153); font-weight: bold;"&gt;new application&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;reuse and extend available AndroMDA cartridges&lt;/span&gt; as far as you can.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Only build your own architecture and thus create your own cartridges if you and your team have the &lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;capacity and resources&lt;/span&gt; &lt;/span&gt;to do this.&lt;/li&gt;     &lt;/ul&gt;Happy modeling,&lt;br /&gt;Lofi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-115988657522684625?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/115988657522684625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=115988657522684625' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115988657522684625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115988657522684625'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2006/10/reuse-or-rewrite-andromda-cartridges.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-115909817790282398</id><published>2006-09-24T04:19:00.000-07:00</published><updated>2006-09-24T05:12:10.000-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;Next year conference...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next year  at &lt;a href="http://www.sigs.de/kongresse/oop_2007/OOP_2007_ConferenceProgram.pdf"&gt;OOP 2007&lt;/a&gt; &lt;a href="http://blog.invalidobject.com/foobar/"&gt;Frank&lt;/a&gt; and I will offer a session about &lt;span style="font-style: italic;"&gt;MDA&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;product line engineering&lt;/span&gt;. In this session we'll show how to use MDA with product line techniques in a &lt;span style="font-weight: bold;"&gt;pragmatic way&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;by using Open Source Java products. &lt;/span&gt;We'll underline the importance of &lt;span style="font-style: italic;"&gt;Business Rules&lt;/span&gt;, so that we will be able to build a flexible solution for &lt;span style="font-style: italic; color: rgb(0, 102, 0);"&gt;some domains&lt;/span&gt; which is based on the&lt;span style="font-style: italic;"&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;same business requirements&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;This should be&lt;span style="color: rgb(51, 204, 0);"&gt; a practical session&lt;/span&gt; and not &lt;span style="color: rgb(255, 102, 102);"&gt;a theoretical one&lt;/span&gt; as often the case in product line sessions. I would also like to thank &lt;a href="http://it-and-more.blogspot.com/"&gt;Gernot&lt;/a&gt; who made this session possible!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-115909817790282398?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/115909817790282398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=115909817790282398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115909817790282398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115909817790282398'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2006/09/next-year-conference.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-115608302689108376</id><published>2006-08-20T07:06:00.000-07:00</published><updated>2006-09-20T13:50:37.896-07:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;The Heavyweight Champions are... Springframework and    Hibernate?&lt;/span&gt;&lt;/b&gt; &lt;/p&gt;  &lt;p&gt;There are a lot of argumentations exist trying to proof whether a combination    of &lt;span style="color: rgb(0, 102, 0);"&gt;Springframework&lt;/span&gt; and &lt;span style="color: rgb(0, 102, 0);"&gt;Hibernate&lt;/span&gt;    is &lt;b&gt;still&lt;/b&gt; a &lt;i&gt;"lightweight"&lt;/i&gt; or &lt;b&gt;already &lt;/b&gt;a &lt;i&gt;"heavyweight"&lt;/i&gt;    champion. Please see following discussions in TSS for some of arguments: &lt;/p&gt;  &lt;ul&gt; &lt;li&gt;     &lt;p style="margin-bottom: 0cm;"&gt;&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=41675"&gt;Ten        Common Misconceptions about Spring&lt;/a&gt; &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;     &lt;p&gt;&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=38021"&gt;Developing        J2EE applications without Spring? Why?&lt;/a&gt; &lt;/p&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;My conclusions after working with Springframework and Hibernate in some of    my projects are: &lt;b&gt;yes&lt;/b&gt;, Springframework and Hibernate are&lt;b&gt; &lt;i&gt;already    &lt;/i&gt;&lt;/b&gt;our&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;heavyweight champions! Why? &lt;/p&gt;  &lt;ol&gt; &lt;li&gt;      &lt;p style="margin-bottom: 0cm;"&gt;It's getting on my nerves as I have to create SpringBeans by editing those Spring XML files. This is the same with Hibernate hbml files. I know there are some tools available (e. g. Spring and Hibernate plugins) to help me finish these annoying works. But still... at the end this is just the &lt;span style="color: rgb(255, 0, 0);"&gt;same as working with EJB 2.x&lt;/span&gt;        with those &lt;span style="color: rgb(255, 0, 0);"&gt;deployment descriptors&lt;/span&gt;. You might        say, I can use annotations. The problem is I still have to &lt;span style="color: rgb(255, 0, 0);"&gt;deploy        in JDK 1.4.x&lt;/span&gt;. So annotations just won't work. I also know that Springframework        2.0 uses &lt;span style="color: rgb(255, 0, 0);"&gt;XML schema&lt;/span&gt; so the XML files are easier        and shorter to create, but again, I hate creating XML files by hand and        you?&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;      &lt;p style="margin-bottom: 0cm;"&gt;Special for Springframework XML files and this is often the case: you need one XML file for remote client context, one XML file for local client context and one XML file for test? Gee, how many XML files should I &lt;i&gt;write&lt;/i&gt; or &lt;i&gt;copy and paste&lt;/i&gt; plus &lt;i&gt;edit&lt;/i&gt;?      &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;      &lt;p style="margin-bottom: 0cm;"&gt;Hibernate should &lt;i&gt;protect&lt;/i&gt; us from the database behind it. Is this true? Until a certain level yes, but if you try to work with Oracle and at the same time with MySQL you will &lt;span style="color: rgb(255, 0, 0);"&gt;still        need &lt;/span&gt;to understand the differences between those databases! Do you know that Oracle always saves "" (empty string) as a null value? And this is not the case with MySQL! So welcome back to the relational database!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Do you know how many methods do we have in Hibernate just to persist or create a new object? What are these methods actually for&lt;span style="font-style: italic;"&gt;: save&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;saveOrUpdate&lt;/span&gt;,  &lt;span style="font-style: italic;"&gt;persist&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;merge&lt;/span&gt;? Man, in SQL we just have one command: &lt;span style="color: rgb(51, 204, 0);"&gt;insert&lt;/span&gt;! Do we really need those different kind of methods just for a simple thing? Why can't we just say &lt;span style="color: rgb(51, 204, 0);"&gt;"&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 204, 0);"&gt;save&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;"&lt;/span&gt; and everything will be taken care by Hibernate?&lt;br /&gt;&lt;/p&gt; &lt;/li&gt; &lt;li&gt;      &lt;p style="margin-bottom: 0cm;"&gt;I think you already heard a lot about &lt;i&gt;architecture        discussion&lt;/i&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;to DTO or not&lt;/span&gt;. If not you can        check out some interesting discussion in Springframework forum: &lt;a href="http://forum.springframework.org/showthread.php?t=24900"&gt;Transfer        Objects.&lt;/a&gt; You also can find the same discussion in TSS: &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=34278"&gt;Protecting        the Domain Model.&lt;/a&gt; So, what's the hell why we use POJO if we still have to use DTO? You don't need to use DTO at all - many of us would loudly say, but what if we need to physically separate the tiers? In this case you will meet the most hated exception in Hibernate: &lt;span style="color: rgb(255, 0, 0);"&gt;Lazy Loading        error&lt;/span&gt; if you are not carefully design your POJO! So sometimes we        need DTO and sometimes not?&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;     &lt;p style="margin-bottom: 0cm;"&gt;If you are by fall putting &lt;span style="color: rgb(255, 0, 0);"&gt;something        wrong&lt;/span&gt; in the XML files - both Springframework and Hibernate - (not syntactically because your schema will help you in this case) and you get some errors because of these things. Good luck and have fun trying to find them!&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So what are your options? &lt;/p&gt;  &lt;ol&gt; &lt;li&gt;      &lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="color: rgb(0, 174, 0);"&gt;Accept those points above        and be sure to know them best.&lt;/span&gt; Why not? You think, the combination of Springframework and Hibernate is still easier to use than EJB 2.x? More flexible than EJB 3.x? &lt;b&gt;Yes&lt;/b&gt;, you are right. So, better to have&lt;span style="color: rgb(255, 0, 0);"&gt;        a bad solution&lt;/span&gt; than &lt;span style="color: rgb(255, 0, 0);"&gt;no solution&lt;/span&gt; at all.        Wow, you are what I call a &lt;i&gt;pragmatic Java programmer&lt;/i&gt;. &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;      &lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="color: rgb(0, 174, 0);"&gt;Use AndroMDAwith the Springframework        and Hibernate cartridges&lt;/span&gt;. Oh my, I don't want to have something to        do with &lt;b&gt;MDA&lt;/b&gt; and &lt;b&gt;UML&lt;/b&gt;. But what are the advantages of AndroMDA? No need to create those damn XML files - both for Springframework and Hibernate - by hand. You have a standard architecture which will be strongly followed by everyone in your team (if you have one) all the time. Nothing like sometimes with DTO, sometimes without DTO. But still you need to implement those DTOs! Yes, but at least you have the skeletons created for you. &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;      &lt;p&gt;&lt;span style="color: rgb(0, 174, 0);"&gt;Build your own&lt;/span&gt; Dependency Injection and your        OR mapper framework which are &lt;b&gt;far better&lt;/b&gt; than Springframework plus Hibernate and don't forget at the end you should put them as Open Source products and release them through TSS news :-) So we all can admire your new products: oooh a new &lt;i&gt;very easy framework but also it can support        any complex situations&lt;/i&gt; (= &lt;span style="color: rgb(0, 102, 0);"&gt;&lt;b&gt;all you can eat framework        &lt;/b&gt;&lt;/span&gt;- and yes, Springframework is probably getting in this direction        too. Of course you don't need to use everything &lt;i&gt;&lt;b&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;but...        &lt;/span&gt;&lt;/b&gt;&lt;/i&gt;we have &lt;i&gt;that&lt;/i&gt;, we have &lt;i&gt;this&lt;/i&gt;, ... You know what        I mean). &lt;/p&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;It seems that using the &lt;span style="color: rgb(0, 174, 0);"&gt;&lt;b&gt;option number 2&lt;/b&gt;&lt;/span&gt;    you will get back those &lt;i&gt;&lt;b&gt;"lightweight"&lt;/b&gt;&lt;/i&gt;&lt;b&gt; Springframework    with Hibernate&lt;/b&gt; (no XML files - they will be generated and we always use the same architecture everywhere)? It could be. With the price of using UML? Is this still &lt;i&gt;"lightweight"&lt;/i&gt; or we just &lt;b&gt;&lt;i&gt;move&lt;/i&gt; our weight    somewhere else&lt;/b&gt;? At the moment I prefer to use the &lt;span style="color: rgb(0, 174, 0);"&gt;option    number 2&lt;/span&gt; as I feel that I have lot more advantages in comparison of using    the &lt;span style="color: rgb(0, 174, 0);"&gt;option number 1&lt;/span&gt; or &lt;span style="color: rgb(0, 174, 0);"&gt;3&lt;/span&gt;.    But this should not be a general case and should be proven case by case!&lt;/p&gt;  &lt;p&gt;Allright, at the end I admit that there are actually &lt;b&gt;no &lt;i&gt;"heavyweight"&lt;/i&gt;    or &lt;i&gt;"lightweight"&lt;/i&gt; frameworks&lt;/b&gt;, everything are &lt;i&gt;relative&lt;/i&gt; to what exist and to what you know. In any case just take one of your options above and try to solve the problems you need to solve for your customers.&lt;/p&gt;  &lt;p&gt;Happy coding and greets,&lt;br /&gt;Lofi.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-115608302689108376?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/115608302689108376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=115608302689108376' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115608302689108376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115608302689108376'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2006/08/heavyweight-champions-are.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-115608140025382962</id><published>2006-08-20T06:37:00.000-07:00</published><updated>2006-08-20T06:43:20.260-07:00</updated><title type='text'></title><content type='html'>The most interesting discussion in year 2005 I've followed and joined  sofar about MDA and the future of Java is this one at TheServerSide.com: &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=37121"&gt;Beyond Java&lt;/a&gt;. More than 760 threads... with many interesting and great ideas...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-115608140025382962?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/115608140025382962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=115608140025382962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115608140025382962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115608140025382962'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2006/08/most-interesting-discussion-in-year.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-115584669702550394</id><published>2006-08-17T13:21:00.000-07:00</published><updated>2006-08-17T13:31:37.053-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;Happy Anniversary Indonesia!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;p.f. 17 August 2006 - 61 years&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;FYI: &lt;span style="font-style: italic;"&gt;Java&lt;/span&gt; island is located in Indonesia... so if you want to learn &lt;span style="color: rgb(102, 102, 0);"&gt;Java language&lt;/span&gt; you need to know Indonesian language first :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;This should be your first exercise...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Selamat Ulang Tahun Kemerdekaan Indonesia yang ke 61! Semoga selalu panjang umur! Untuk membaca pidato Presiden RI, silahkan untuk melihat artikel ini di KOMPAS: &lt;a href="http://www.kompas.com/ver1/nasional/0608/16/pidato_presRI_1.htm"&gt;Pidato Presiden 17 Agustus 2006&lt;/a&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-115584669702550394?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/115584669702550394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=115584669702550394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115584669702550394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115584669702550394'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2006/08/happy-anniversary-indonesia-p.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-115584182865796929</id><published>2006-08-17T12:05:00.000-07:00</published><updated>2006-08-17T12:10:28.666-07:00</updated><title type='text'></title><content type='html'>Jorn Bettin has written this comment on the "Standardisation of Model Driven Approach":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Also, beyond the realm of MDA, in relation to model driven approaches and the use of domain-specific languages in general, there is the question of when and to what degree will standardisation occur. Usually the more domain-specific a language can be made, the more value it adds. Yet, the closer a domain-specific language gets to capturing part of the competitive edge of an organisation, the less incentive for industry wide "standardisation".&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From my point of view standardisation will only happen if we could get a direct positive impact from it. &lt;span style="font-weight:bold;"&gt;So, this is actually very pragmatic.&lt;/span&gt; A very good example is the use of &lt;span style="font-weight:bold;"&gt;AndroMDA&lt;/span&gt;. I could imagine that there are a lot of organisations out there - which are all the user of AndroMDA - which have standardised their "DSL" based on AndroMDA DSL elements like Entity, Service, tagged values, etc. Why? Because you get directly benefits from it. You can generate your codes easily when you use AndroMDA DSL. &lt;br /&gt;&lt;br /&gt;So, just a specification will not help to standardise anything (or at least it will take very long = OMG). I always take the example of JCP (Java Community Process). You need 3 components to be able to standardise APIs:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;- Specification&lt;br /&gt;- Reference Implementation&lt;br /&gt;- Test Compatibility Kit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;... and this is not the case with OMG. No reference implementation, no test compatibility kit. IMO, Open Source project like AndroMDA could bring the standardisation a step further. Just like succesful Open Source projects Hibernate, Spring, Struts, etc. which are &lt;span style="font-weight:bold;"&gt;de-facto&lt;/span&gt; standard and not de-jure standard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-115584182865796929?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/115584182865796929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=115584182865796929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115584182865796929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115584182865796929'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2006/08/jorn-bettin-has-written-this-comment.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31714108.post-115394045145391576</id><published>2006-07-26T11:59:00.000-07:00</published><updated>2006-07-26T12:04:54.523-07:00</updated><title type='text'></title><content type='html'>Welcome to Lofi model @ work Blog! Here I will post all my ideas and comments about software development... Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31714108-115394045145391576?l=lofidewanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lofidewanto.blogspot.com/feeds/115394045145391576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31714108&amp;postID=115394045145391576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115394045145391576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31714108/posts/default/115394045145391576'/><link rel='alternate' type='text/html' href='http://lofidewanto.blogspot.com/2006/07/welcome-to-lofi-model-work-blog-here-i.html' title=''/><author><name>lofi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
