tag:blogger.com,1999:blog-34046919609620196612024-02-18T17:43:29.573-08:00Your Way To Thinking Differentrenearaujohttp://www.blogger.com/profile/16914223580150483523noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-3404691960962019661.post-43031306717814242482008-03-31T18:51:00.000-07:002008-07-12T11:50:35.960-07:00Rife: Full-Stack and Open-Source Java Framework<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGts8REU2mhtAN9XZodABWqh4orfE9VFqQjuQvj7JVYUHFSQDO9ijc7jAIBAXPl4mPTBA0Bm8r1hQo8KUZ6DvTbm202GhsyO6Ji8QYSqNv2t9LbjuRn7WhQ6u3d9UtCFXO51Ms4_m109nt/s1600-h/logo.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGts8REU2mhtAN9XZodABWqh4orfE9VFqQjuQvj7JVYUHFSQDO9ijc7jAIBAXPl4mPTBA0Bm8r1hQo8KUZ6DvTbm202GhsyO6Ji8QYSqNv2t9LbjuRn7WhQ6u3d9UtCFXO51Ms4_m109nt/s400/logo.png" alt="" id="BLOGGER_PHOTO_ID_5184116082530525762" border="0" /></a><br /><br /><div style="text-align: justify;"> In a debate with advocates of various Web frameworks, such as <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a>, <a href="http://www.springframework.org/">Spring MVC</a>, <a href="http://www.rubyonrails.org/">Ruby on Rails</a>...and <a href="http://rifers.org/">Rife</a> ( Rife?????), happened at <a href="http://javasymposium.techtarget.com/">The Server Side Java Symposium</a>, on last Friday, march 28th, discussed about which Java Web Framework is the best. Common news, no??<br /></div><br /> Right, Sure. But, for me, surprising appeared one name... which? Rife.<br /><br /><div style="text-align: justify;"> <a href="http://rifers.org/">RIFE</a> is a full-stack, open-source Java web application framework, offering fast results with the promise of maintainability and code clarity. Development becomes productive, consistent and reusable.<br /></div><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiumBwSH4mQ1XwN-GYZLzAIFCXaXxCUBNrLu2k9Sw7v13ei_UQS49D2QwFbjrafJI1vR9DRwm2gihGhbjN_lKzLMOwg2lN6V-CFTLf7LtgcUmFONLoW8A2pRhVjagCechk_BPRixGCNouod/s1600-h/Sem+t%C3%83%C2%ADtulo.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiumBwSH4mQ1XwN-GYZLzAIFCXaXxCUBNrLu2k9Sw7v13ei_UQS49D2QwFbjrafJI1vR9DRwm2gihGhbjN_lKzLMOwg2lN6V-CFTLf7LtgcUmFONLoW8A2pRhVjagCechk_BPRixGCNouod/s400/Sem+t%C3%83%C2%ADtulo.png" alt="" id="BLOGGER_PHOTO_ID_5184118414697767506" border="0" /></a><br /><b><span style="font-size:130%;">Differences</span> </b><br /><br /> Here are some differences from other Java Web Frameworks.<br /><br /><ul><li>You get 90% of the features with 10% of the usual effort, thanks to its full stack;</li></ul><ul><li>Logic-less HTML templates that can be previewed in any browser and edited with standard tools;<br /></li></ul><ul><li>Uniform component model, designed from the ground up for reusability: applications, sub-sites, pages, porlets, widgets, ... can be easily packaged and placed in any other context;</li></ul><ul><li>Integrated native Java web continuations and flow continuations;</li></ul><ul><li>Metaprogramming, driven by your domain model, but without polluting it;</li></ul><ul><li>Flexible declaration and configuration with support for plain Java as well as XML;</li></ul><ul><li>Core support for web data flow as well as page logic flow;</li></ul><ul><li>Integrates with existing solutions such as Spring and standard JDBC datasources;</li></ul><ul><li>Multi-dimensional conversational state management with scoping;</li></ul><ul><li>Language-independent template engine with support for XHTML, HTML, XML, Text, SQL, Java;</li></ul><ul><li>Persistence layer with content management integration and versioning;</li></ul><ul><li>Designed for the creation of consistent maintainable applications as well as on quick delivery;</li></ul><ul><li>Embraces standard protocols and specifications, providing larger building blocks by wrapping lower layers with high-level functionalities;</li></ul><ul><li>Out-of-container testing with full introspection capabilities of the executed flow and components;</li></ul><ul><li>Lightweight execution model that has been proven in production;</li></ul><ul><li>Built for Java 5 with intelligent downgraded support for Java 4, and<br /></li></ul><ul><li>Designed for developer comfort: minimal application restarts thanks to automatic detection of file modifications.</li></ul><br /><span style="font-size:130%;"><span style="font-weight: bold;">Features</span><b> </b></span><br /><br /> I tried to pass the features of Rife, and some explanation about each one.<br /><br /><span style="font-weight: bold;font-size:85%;" ><span style="font-style: italic;">Web application engine</span></span><br /><br /><div style="text-align: justify;"> RIFE's web engine provides you with a solution that values maintainability above everything else, but without compromising on productivity.<br /></div><br /><span style="font-weight: bold; font-style: italic;font-size:85%;" >Integrated web continuations</span><br /><br /><div style="text-align: justify;"> Continuations are constructs that are inspired from Scheme.<br /></div><br /><span style="font-size:85%;"><span style="font-weight: bold; font-style: italic;">IoC support</span></span><br /><br /><div style="text-align: justify;"> RIFE focuses on the retrieval of the references and the injection of objects into the web engine elements.<br /></div><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Out of container testing (Nice! )</span></span><br /><br /> RIFE web applications can be fully tested outside of a servlet container.<br /><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Content management framework</span></span><br /><br /><div style="text-align: justify;"> RIFE provides a Content Management Framework that is geared towards the process of storing, loading, validating, formatting, transforming, versioning, retrieving and streaming of various content types.<br /></div><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Bidirectional multi-format template engine</span></span><br /><br /><div style="text-align: justify;"> Many template engines start out with a desire to separate presentation from logic.<br /></div><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Template content transformation</span></span><br /><br /> The content of each template can be transformed at instantiation.<br /><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Centralized meta-data facility</span></span><br /><br /><div style="text-align: justify;"> The main purpose of constraints is to alter the default behavior of a data type and to clearly set the accepted limits and behavioral directions.<br /></div><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Authentication framework</span></span><br /><br /> RIFE provides its own framework for the authentication of web applications.<br /><br /><span style="font-style: italic;font-size:85%;" ><span style="font-weight: bold;">JDBC abstraction layer</span></span><br /><br /> Using raw JDBC directly requires a lot of discipline and boilerplate code.<br /><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Database query builders</span></span><br /><br /> RIFE has a layered approach to database interaction and persistence.<br /><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Persistence layer</span></span><br /><br /><div style="text-align: justify;"> The JDBC abstraction layer and database query builders offer everything to create a generic database persistence engine.<br /></div><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Configuration framework</span></span><br /><br /> The configuration of your applications can be isolated into dedicated XML files.<br /><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Central application life-cycle management</span></span><br /><br /><div style="text-align: justify;"> Each application is a collection of optionally dependent participants that are responsible for initializing and cleaning up the required context and features.<br /></div><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Cron-like scheduler</span></span><br /><br /><div style="text-align: justify;"> RIFE provides an asynchronous scheduler as an application participant that can be set up to run tasks at specific moments.<br /></div><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Asynchronous mail queue</span></span><br /><br /> Sending mails in real-time can become a huge bottleneck in popular web sites.<br /><br /><span style="font-size:85%;"><span style="font-weight: bold; font-style: italic;">Content syndication framework</span></span><br /><br /> RSS 2.0 and Atom 0.3 are natively supported and can be generated in real-time.<br /><br /><span style="font-size:85%;"><span style="font-style: italic; font-weight: bold;">Resource abstraction</span></span><br /><br /> Retrieving and writing resources is completely abstracted.<br /><br /><span style="font-size:85%;"><span style="font-weight: bold; font-style: italic;">Web services</span></span><br /><br /><div style="text-align: justify;"> RIFE provides support for SOAP and Hessian web-services through the integration of 3rd party libraries.<br /></div><br /><h2>Integration</h2> <p> RIFE integrates and supports a variety of back-end libraries, frameworks and tools.</p> <table class="features"><tbody><tr valign="top"> <td> <h3 style="font-style: italic;"><span style="font-size:85%;"> Databases</span></h3> <ul><li><a href="http://db.apache.org/derby/">Derby</a></li><li><a href="http://www.firebirdsql.com/">Firebird</a></li><li><a href="http://h2database.com/">H2</a></li><li><a href="http://hsqldb.sourceforge.net/">HSQLDB</a></li><li><a href="http://www.mckoi.com/database">McKoiSQL</a></li><li><a href="http://www.mysql.com/">MySQL</a></li><li><a href="http://www.daffodildb.com/">One$DB / DaffodilDB</a></li><li><a href="http://www.oracle.com/">Oracle</a></li><li><a href="http://www.postgresql.org/">PostgreSQL</a></li></ul> </td> <td> <h3 style="font-style: italic;"><span style="font-size:85%;">Scripting languages</span></h3> <ul><li><a href="http://www.beanshell.org/">Beanshell</a></li><li><a href="http://groovy.codehaus.org/">Groovy</a></li><li><a href="http://www.janino.net/">Janino</a></li><li><a href="http://www.jruby.org/">JRuby</a></li><li><a href="http://www.jython.org/">Jython</a></li><li><a href="http://mvel.codehaus.org/">MVEL</a></li><li><a href="http://www.ognl.org/">OGNL</a></li><li><a href="https://pnuts.dev.java.net/">Pnuts</a></li><li><a href="http://www.mozilla.org/rhino/">Rhino</a></li><li><a href="http://tcljava.sourceforge.net/docs/website/index.html">Tcl/java</a></li></ul> </td> <td> <h3 style="font-style: italic;"><span style="font-size:85%;"> Servlet containers</span></h3> <ul><li><a href="https://glassfish.dev.java.net/">Glassfish</a></li><li><a href="http://www.jboss.org/products/jbossas">JBoss AS</a></li><li><a href="http://jetty.mortbay.org/jetty/">Jetty</a></li><li><a href="http://www.tagtraum.com/jo.html">Jo!</a></li><li><a href="http://www.orionserver.com/">Orion</a></li><li><a href="http://www.caucho.com/">Resin</a></li><li><a href="http://tomcat.apache.org/">Tomcat</a></li><li><a href="http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/weblogic">Weblogic</a></li></ul> </td> </tr> <tr valign="top"> <td> <h3 style="font-style: italic;"><span style="font-size:85%;">Image readers and convertors</span></h3> <ul><li><a href="http://rsb.info.nih.gov/ij/">ImageJ</a></li><li><a href="http://reader.imagero.com/">ImageroReader</a></li><li><a href="http://java.sun.com/products/java-media/jai/">Java Advanced Imaging</a></li><li><a href="http://java.sun.com/products/jimi/">Jimi</a></li><li><a href="http://www.yeo.id.au/jmagick/">JMagick</a></li></ul> </td> <td> <h3 style="font-style: italic;"><span style="font-size:85%;"> Clustering</span></h3> <ul><li><a href="http://www.terracotta.org/">Terracotta</a></li></ul> <h3 style="font-style: italic; text-align: left;"><span style="font-size:85%;"> Web services</span></h3> <ul><li><a href="http://www.caucho.com/hessian">Hessian</a></li><li><a href="http://xfire.codehaus.org/">XFire</a></li></ul> </td> <td> <h3 style="font-style: italic;"><span style="font-size:85%;">Frameworks</span></h3> <ul><li><a href="http://www.springframework.org/">Spring</a></li></ul> <h3 style="font-style: italic;"><span style="font-size:85%;"> Messaging</span></h3> <ul><li><a href="http://java.sun.com/products/javamail/">JavaMail</a></li></ul></td></tr></tbody></table><br /><span style="font-weight: bold;font-size:130%;" >Examples</span><br /><span style="display: block;" id="formatbar_Buttons"><span class="on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"></span></span><br /> You can See some examples, <a href="http://rifers.org/examples">here</a><a href="http://rifers.org/examples">.</a><br /><span style="display: block;" id="formatbar_Buttons"><span class="on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"></span></span><br /><br /><span style="font-weight: bold; font-style: italic;font-size:130%;" >Open-Source Concept ( COOLLL!!)</span><br /><br /> Like an open-source project works, Rife has a <a href="http://rifers.org/wiki/display/RIFE/LiveGuide">Rive Live Guide</a> as a RIFE Users Guide, where the people can write.<br /><br /><br />So, Wake up and keep watch this framework and collaborate. :)renearaujohttp://www.blogger.com/profile/16914223580150483523noreply@blogger.com5tag:blogger.com,1999:blog-3404691960962019661.post-7528027469565158492008-03-23T07:52:00.000-07:002008-03-23T08:52:14.130-07:00Mockito: A Test Spy implementationWhat's the best Mock Framework that you think?<br /><br />Some people say: "<a href="http://www.easymock.org/">EasyMock</a>, sure!".<br /><br />Others: "<a href="http://www.jmock.org/">JMock</a>!".<br /><br />Wait wait wait! You be heard about <a href="http://xunitpatterns.com/Test%20Spy.html">Test Spy</a>?<br /><br /><a href="http://code.google.com/p/mockito/">Mockito</a> is an implementation of <a href="http://xunitpatterns.com/Test%20Spy.html">Test Spy</a>, but doesn't use this metaphor at all. Created by <a href="http://monkeyisland.pl/about/">Szczepan Faber</a>, aiming to become the best mocking framework!<br /><br />So, what <a href="http://code.google.com/p/mockito/">Mockito</a> do?<br /><br />Like expect-run-verify library, as <a href="http://www.easymock.org/">EasyMock</a> and <a href="http://www.jmock.org/">Jmock</a>, <a href="http://code.google.com/p/mockito/">Mockito</a> offers simpler and more intuitive approach. You ask questions about interactions <span style="font-weight:bold;">after</span> execution. Using other libraries, you often look irrelevant interactions.<br /><br /><a href="http://code.google.com/p/mockito/">Mockito</a> has similar syntax to <a href="http://www.easymock.org/">EasyMock</a>, therefore you can do refactor safely! Differ by notion of expectations, there is only stubbing or verification.<br /><br />Some other features:<br /><br /> * Mocks concrete classes as well as interfaces<br /> * Allows flexible verification in order (e.g: verify in order what you want, not every single interaction)<br /> * Supports exact-number-of-times and at-least-once verification<br /> * Flexible verification or stubbing using argument matchers (anyObject(), anyString() or refEq() for reflection-based equality matching)<br /> * Allows creating custom argument matchers or using existing hamcrest matchers<br /> * Verification errors are clean - click on stack trace to see failed verification in test; click on exception's cause to navigate to actual interaction in code. Stack trace is always clean.<br /> * Little annotation syntax sugar - @Mock<br /> * Single-jar distribution mockito-all-1.2.jar includes cglib, objenesis and java source<br /> * Zip distribution mockito-1.2.zip contains all jars, javadoc and source.renearaujohttp://www.blogger.com/profile/16914223580150483523noreply@blogger.com4tag:blogger.com,1999:blog-3404691960962019661.post-47313466646552662372007-12-14T19:33:00.000-08:002007-12-14T19:39:36.517-08:00WEB 2.0 - Is There Sick Search??<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3SUW80PWstT8w-19hqTgMjVg3fhqc79PYvpaWObB5lq9N0XGRJw7f0f0ZWn4eq7HuezF3fFNlq7IvuV09ZEov2ZRkL2owQY8LhCyFF1YvA8epge_D7CReuUWuxrj0sMl6k8iB2q-TfhXg/s1600-h/medgle.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3SUW80PWstT8w-19hqTgMjVg3fhqc79PYvpaWObB5lq9N0XGRJw7f0f0ZWn4eq7HuezF3fFNlq7IvuV09ZEov2ZRkL2owQY8LhCyFF1YvA8epge_D7CReuUWuxrj0sMl6k8iB2q-TfhXg/s400/medgle.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5144038211686098978" /></a><br />Currently, the demand on the Web becomes increasingly interesting. Any issues that we want to get information, will be easily located. Almost parallel to the amount of information obtained by this mechanism, the ideas emerge, and innovations are inevitable.<br /><br />When we are sick, trying to ask the older people: How can I prevent? Or am I sick? Or what drugs should I take? All older people, like our parents, answer these questions. The culture to answer these questions, was old-fashioned:) Our generation, demand for such questions and answer Web!<br /><br />How? Why? Prevention?<br /><br /> Innovate, <a href="http://www.medgle.com/">MEDgle</a> becomes the newest pharmacist online! With the objective to educate and provide information online, the MEDical GLobal Electronic computer generated search examines some of 6000 symptoms and diagnostic 2000 diseases. See <a href="http://www.medgle.com/">MEDgle</a>, enjoy!renearaujohttp://www.blogger.com/profile/16914223580150483523noreply@blogger.com1tag:blogger.com,1999:blog-3404691960962019661.post-81992055655212152742007-12-13T18:48:00.000-08:002007-12-14T03:45:12.486-08:00Web Operating System - G.ho.stNews for some. For others, only a confirmation of convergency of technology. An operating system directly from Web. Then comes the Global Hosted Operating SysTem or <span class="text_style"><a href="http://g.ho.st/">G.ho.st</a></span>, a VC (virtual computer) that provides services, such as your own Desktop on the web, making it accessible at home, work or cybers. In the alpha version <span class="text_style"><a href="http://g.ho.st/">G.ho.st</a></span>, presents several features, such as 3GB of memory for storage data, accessed in various ways, such as FTP, youtube, twitter and others. All you need is a <a href="http://www.geticeweasel.org/">web browser</a>. More Information: <span class="text_style"><a href="http://g.ho.st/">G.ho.st</a></span>renearaujohttp://www.blogger.com/profile/16914223580150483523noreply@blogger.com0tag:blogger.com,1999:blog-3404691960962019661.post-89305168344248919802007-12-13T18:31:00.000-08:002007-12-13T18:45:17.034-08:00The Beginning - The First Post !Hail!<br /><br /><div id="result_box" dir="ltr">My English is not the better, but ... For everything, there is a beginning!<br /><br />In this blog, I try to discuss some issues with same way: with great interest. Daily issues, hobbies or relating to work. My philosophy will be:</div><br />Thinking Different To Doing Different!renearaujohttp://www.blogger.com/profile/16914223580150483523noreply@blogger.com2