| <?xml version="1.0" encoding="utf-8"?> |
| <feed xmlns="http://www.w3.org/2005/Atom"> |
| |
| <title></title> |
| <link href="https://polygene.apache.org/atom.xml" rel="self"/> |
| <link href="https://polygene.apache.org"/> |
| <updated>2018-04-09T23:50:07+08:00</updated> |
| <id>https://polygene.apache.org</id> |
| <author> |
| <name></name> |
| <email></email> |
| </author> |
| |
| |
| <entry> |
| <title>Apache Polygene™ (Java Edition) Release 3.0.0</title> |
| <link href="https://polygene.apache.org/2017/07/28/apache-polygene-java-3.0.0.html"/> |
| <updated>2017-07-28T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2017/07/28/apache-polygene-java-3.0.0.html</id> |
| <content type="html"><h2 id="apache-polygene-java-edition-release-300">Apache Polygene™ (Java Edition) Release 3.0.0</h2> |
| |
| <h3 id="release-notes">Release-notes</h3> |
| |
| <h4 id="new-features">New Features</h4> |
| |
| <ul> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-111">POLYGENE-111</a> - Easy to use Restful Library</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-155">POLYGENE-155</a> - Apache Geode EntityStore</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-225">POLYGENE-225</a> - Apache Cassandra EntityStore</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-29">POLYGENE-29</a> - Use javax.script for JavaScript/Groovy/++ language integration</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-133">POLYGENE-133</a> - @Concerns and @SideEffects on methods.</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-141">POLYGENE-141</a> - UseDefaults annotation with value</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-173">POLYGENE-173</a> - Add a convenience method for converting Associations to Values</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-174">POLYGENE-174</a> - Add convenience methods for List/Set/Map of values into Associations</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-54">POLYGENE-54</a> - Support more use-cases in toEntity/toValue mechanism</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-248">POLYGENE-248</a> - Add ManyAssociation.clear() &amp; NamedAssociation.clear()</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-53">POLYGENE-53</a> - Allow registration of custom (de)serializers on assembly</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-251">POLYGENE-251</a> - Support Java 8 default methods on interfaces</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-97">POLYGENE-97</a> - UnitOfWork as a Composite</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-50">POLYGENE-50</a> - Make the bytecode generation ‘pluggable’</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-48">POLYGENE-48</a> - Improved reporting on invalid assembly models</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-263">POLYGENE-263</a> - Composite types that are invisible, should be reported in NoSuchCompositeTypeException</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-264">POLYGENE-264</a> - Make ConstraintViolations more readable</li> |
| </ul> |
| |
| <h4 id="improvement">Improvement</h4> |
| |
| <ul> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-231">POLYGENE-231</a> - Serialization 3.0</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-240">POLYGENE-240</a> - Serialization converters can be applied on Properties or Value types</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-236">POLYGENE-238</a> - javax.json serialization allows to set provider properties at assembly</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-239">POLYGENE-239</a> - javax.xml serialization allows to set provider properties at assembly</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-242">POLYGENE-242</a> - Leverage value state serialization in JSONMapEntityStores</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-153">POLYGENE-153</a> - SQL EntityStore mixes in JSONMapEntityStoreMixin</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-116">POLYGENE-116</a> - Support multi-instances-applications in SQLEntityStore</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-172">POLYGENE-172</a> - MongoDB configuration is not friendly.</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-176">POLYGENE-176</a> - Rework Riak EntityStore for Riak 2</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-177">POLYGENE-177</a> - Rework ElasticSearch Index/Query for ElasticSearch 5</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-178">POLYGENE-178</a> - Rework EhCache Cache for EhCache 3</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-136">POLYGENE-136</a> - Refactoring of Models and Instances in Runtime</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-186">POLYGENE-186</a> - Automatically add an UuidIdentityGenerator to a module if none has been defined explicitly.</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-187">POLYGENE-187</a> - Auto-add a UnitOfWorkFactory that is not declared explicitly</li> |
| </ul> |
| |
| <h4 id="potentially-breaking-changes">Potentially breaking changes</h4> |
| |
| <ul> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-247">POLYGENE-247</a> - Entity state JSON serialization like Value serialization</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-190">POLYGENE-190</a> - Refine Metrics API/SPI</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-112">POLYGENE-112</a> - Replace Function and Function2 with Java 8 equivalents</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-118">POLYGENE-118</a> - Replace Iterable&lt;&gt; usage in Runtime internals with Java 8 Stream API</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-182">POLYGENE-182</a> - Replace Input/Output/Sender/Receiver APIs with Java 8 Streams</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-181">POLYGENE-181</a> - Replace ‘long’ with java.time.Instant</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-124">POLYGENE-124</a> - Replace Joda Time with Java 8 Time API</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-152">POLYGENE-152</a> - Disallow java.util.Date and Joda Time in Property</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-192">POLYGENE-192</a> - Create Codahale Metrics extensions to replace outdated Yammer Metrics</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-183">POLYGENE-183</a> - Remove eventsourcing library</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-156">POLYGENE-156</a> - Remove Scheduler library</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-188">POLYGENE-188</a> - Remove Scala language support</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-222">POLYGENE-222</a> - Remove Indexing-SQL</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-191">POLYGENE-191</a> - Remove org.json java library</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-134">POLYGENE-134</a> - Remove org.apache.polygene.api.dataset</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-123">POLYGENE-123</a> - Remove Base64Encoder in favor of the Java 8 one.</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-184">POLYGENE-184</a> - Remove use of NullArgumentException</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-262">POLYGENE-262</a> - Rename NoSuchCompositeException to NoSuchCompositeTypeException</li> |
| </ul> |
| |
| <h4 id="bug-fixes">Bug fixes</h4> |
| |
| <ul> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-43">POLYGENE-43</a> - Solr Indexing has dependency on RDF library</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-105">POLYGENE-105</a> - ValueSerialization Type Lookup is wrong.</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-126">POLYGENE-126</a> - The forum sample won’t start</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-127">POLYGENE-127</a> - Servlet assembly DSL in HTTP library prevent 2.0 style usage</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-137">POLYGENE-137</a> - EntityStateSerializer unable to handle values that are not declared as composites.</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-138">POLYGENE-138</a> - org.json ValueSerialization of Serializable fail when out of JSON sequence</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-142">POLYGENE-142</a> - Enum Property in EntityComposite serialization error</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-193">POLYGENE-193</a> - Fail when composite type has interface static method</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-224">POLYGENE-224</a> - Initialization race condition in ServiceReferenceInstance</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-227">POLYGENE-227</a> - Configuration perfTest should resolve in IDEA</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-233">POLYGENE-233</a> - Rdf Indexer is not using the unifying Assemblers system.</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-234">POLYGENE-234</a> - Service identity can not be null</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-236">POLYGENE-236</a> - Unit tests for entitystore-mongodb trigger a Windows Firewall popup window</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-237">POLYGENE-237</a> - Unit tests for entitystore-mongodb fail on Windows</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-254">POLYGENE-254</a> - Source distribution contains Gradle wrapper files including JARs</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-259">POLYGENE-259</a> - ConfigurationComposite module is not used for bootstrap serialization</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-260">POLYGENE-260</a> - NamedAssociation.put() doesn’t mark DefaultEntityState “updated”</li> |
| <li><a href="https://issues.apache.org/jira/browse/POLYGENE-261">POLYGENE-261</a> - ManyAssociation does not allow duplicate entries</li> |
| </ul> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Apache® Zest™ Renamed to Apache® Polygene™</title> |
| <link href="https://polygene.apache.org/2017/01/07/rename-to-apache-polygene.html"/> |
| <updated>2017-01-07T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2017/01/07/rename-to-apache-polygene.html</id> |
| <content type="html"><h2 id="apache-zest-renamed-to-apache-polygene">Apache® Zest™ Renamed to Apache® Polygene™</h2> |
| |
| <p>Apache Zest is changing name to <strong>Apache Polygene</strong>. The change has been carried out |
| for the most part, and we are still in the process of encuring all naming is accurate |
| going forward.</p> |
| |
| <p>“The name change was triggered to prevent confusion with other similarly named software |
| such as the visualization toolkit from Eclipse,” said Niclas Hedhman, Vice President of |
| Apache Polygene. “Since becoming an official ASF project, our codebase and community |
| continue to flourish. We are confident that our new identity will reflect ongoing |
| innovation and increased productivity.”</p> |
| |
| <p>With the name we want to communicate that Apache Polygene is polymorphic in nature, |
| and that it is possible to inherit traits in non-standard Java, yet using regular Java |
| and not a new language on top of the JVM.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Apache Zest™ (Java Edition) Release 2.1</title> |
| <link href="https://polygene.apache.org/2015/07/31/apache-zest-java-2.1.html"/> |
| <updated>2015-07-31T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2015/07/31/apache-zest-java-2.1.html</id> |
| <content type="html"><h2 id="apache-zest-java-edition-release-21">Apache Zest™ (Java Edition) Release 2.1</h2> |
| |
| <h3 id="release-notes">Release-notes</h3> |
| |
| <p><a href="https://issues.apache.org/jira/browse/ZEST-40">ZEST-40</a> - Rename “Qi4j” to “Apache Zest (Java Edition)”</p> |
| |
| <blockquote> |
| <p>Apache Zest Java Edition 2.1 is the first release of the Qi4j codebase under the Apache Software Foundation umbrella. |
| To keep backward compatiblity, this version still use org.qi4j.* Java packages and Maven coordinates. |
| Please note that this will change in 3.0.</p> |
| </blockquote> |
| |
| <h4 id="bug">Bug</h4> |
| |
| <ul> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-38">ZEST-38</a> - Scheduler throws NPE</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-41">ZEST-41</a> - FileEntityStore doesn’t work on Windows</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-55">ZEST-55</a> - Type and naming collisions</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-56">ZEST-56</a> - Intermittent failures of ElasticSearch indexing on startup</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-57">ZEST-57</a> - ElasticSearch Query engine generate immense term queries on “large” associations</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-58">ZEST-58</a> - ElasticSearch do not support MatchesSpecification (regexp queries)</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-59">ZEST-59</a> - MixinsModels.primaryType() return wrong type on Java 8</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-61">ZEST-61</a> - In Lifecycle.create(), @This can’t be used in EntityBuilder’s to set non-Optional values.</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-62">ZEST-62</a> - If same Identity is used twice within the same UnitOfWork, it is not detected.</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-64">ZEST-64</a> - Extensions assemblies assemble config entities even if no config module is specified</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-68">ZEST-68</a> - Query DSL templateFor( .. ) fails to build template for ManyAssociations</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-70">ZEST-70</a> - ElasticSearch do not support NeSpecification</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-73">ZEST-73</a> - Redis EntityStore silently squash entities with an existing identity</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-74">ZEST-74</a> - SideEffects being executed more than once</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-78">ZEST-78</a> - File EntityStore silently squash entities with an existing identity</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-107">ZEST-107</a> - Entity SPI: JSONEntityState cloning logic is flawed</li> |
| </ul> |
| |
| <h4 id="improvement">Improvement</h4> |
| |
| <ul> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-42">ZEST-42</a> - Changes to Directory naming in FileEntityStore</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-60">ZEST-60</a> - Better error message when an Entity can not be found.</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-65">ZEST-65</a> - PassivationException should use Java 7 “suppressed exceptions” to gather all failures stacktraces</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-66">ZEST-66</a> - UnitOfWork should leverage Java 7 AutoCloseable and try-with-resources</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-67">ZEST-67</a> - Make Activators injectables</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-75">ZEST-75</a> - Create/Update Entity from Value in Conversion Library</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-77">ZEST-77</a> - Adding ability to set MetaInfo on Module</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-79">ZEST-79</a> - Better error message when Mixin is missing.</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-82">ZEST-82</a> - Add possibility to get EntityReferences from Associations without loading the Entities</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-83">ZEST-83</a> - Remove serialization on ValueComposite creation</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-89">ZEST-89</a> - Introduce ModuleSpi as an injectable entry point</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-90">ZEST-90</a> - Better error message when an Entity type can not be found</li> |
| </ul> |
| |
| <h4 id="new-feature">New Feature</h4> |
| |
| <ul> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-22">ZEST-22</a> - Add toValue() and toEntity() methods to the Qi4j API.</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-47">ZEST-47</a> - Complex Configuration Types</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-63">ZEST-63</a> - ApplicationBuilder for easier assembly with JSON support</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-69">ZEST-69</a> - NamedAssociations</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-71">ZEST-71</a> - Memcache based Cache Extension</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-72">ZEST-72</a> - Assembler adapters for common use cases (visibility, identity, configuration)</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-88">ZEST-88</a> - Layered Assemblies Helpers</li> |
| </ul> |
| |
| <h4 id="task">Task</h4> |
| |
| <ul> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-24">ZEST-24</a> - Release 2.1</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-76">ZEST-76</a> - Drop SLF4J dependency in core</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-80">ZEST-80</a> - Remove Google AppEngine EntityStore</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-81">ZEST-81</a> - Remove Neo4j Library and EntityStore</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-84">ZEST-84</a> - Remove EntityViewer Tool</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-85">ZEST-85</a> - Remove JRuby Scripting Library</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-86">ZEST-86</a> - Remove Beanshell Scripting Library</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-87">ZEST-87</a> - Remove CXF Library</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-91">ZEST-91</a> - Remove Struts Library and Sample</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-92">ZEST-92</a> - Remove SQL C3P0 Library</li> |
| <li><a href="https://issues.apache.org/jira/browse/ZEST-104">ZEST-104</a> - Remove Voldemort EntityStore</li> |
| </ul> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j SDK Release 2.0</title> |
| <link href="https://polygene.apache.org/2013/04/28/qi4j-2.0.html"/> |
| <updated>2013-04-28T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2013/04/28/qi4j-2.0.html</id> |
| <content type="html"><h2 id="qi4j-sdk-release-20">Qi4j SDK Release 2.0</h2> |
| |
| <p>28 Apr 2013 - Montpellier/France &amp; Shanghai/China - Qi4j Release 2.0</p> |
| |
| <p>After nearly 2 years of hard work, the Qi4j Community today launched |
| its second generation Composite Oriented Programming framework.</p> |
| |
| <p>Qi4j is Composite Oriented Programming for the Java platform. It is a |
| top-down approach to write business applications in a maintainable |
| and efficient manner. Qi4j let you focus on the business domain, |
| removing most impedance mismatches in software development, such as |
| object-relation mapping, overlapping concerns and testability.</p> |
| |
| <p>Qi4j’s main areas of excellence are its enforcement of application |
| layering and modularization, the typed and generic AOP approach, |
| affinity based dependency injection, persistence management, indexing |
| and query subsystems, but there are much more.</p> |
| |
| <p>The 2.0 release is practically a re-write of the entire runtime, |
| according to co-founder Niclas Hedhman; “Although we are breaking |
| compatibility in many select areas, most 1.4 applications can be |
| converted with relatively few changes.”. He continues; “These changes |
| are necessary for the next set of planned features, including full |
| Scala integration, the upcoming JDK8 and Event Sourcing integrated |
| into the persistence model.”</p> |
| |
| <p>“It has been a bumpy ride to get this release out the door.”, said |
| Paul Merlin, the 2.0 Release Manager, “but we are determined that |
| Qi4j represents the best technological platform for Java to create |
| applications with high business value.” |
| Not only has the community re-crafted a remarkable codebase, but also |
| created a brand new website, fully integrated with the new Gradle |
| build process.</p> |
| |
| <p>“The new website keeps the documentation in sync with the releases.”, |
| Paul added. “All the samples in documentation are actual code being |
| executed in our test suite. I am very proud of the work that has gone |
| into the new site.”</p> |
| |
| <p>We asked Niclas, “The community calls the Release 2.0 “Reductionism”. |
| What does that mean?”</p> |
| |
| <p>“We wanted to make all the necessary changes, which breaks |
| compatibility, as quickly as possible and get the leanest possible |
| Qi4j out the door. Many advanced features that are planned had to |
| wait. We simply wanted the base platform to be available first.”, |
| says Niclas on the topic.</p> |
| |
| <p>So what is really New?</p> |
| |
| <p>“Everything”, says Niclas. “For Qi4j Core, the most important change |
| is the introduction of functional paradigm in the internal runtime. |
| This creates cleaner code, and we’ll be able to leverage JDK8 very |
| effectively when it will be available. |
| The second big thing is to reduce the Qi4j Core and increase the |
| Extensions concept to more areas than persistence and indexing. We |
| have now added metrics and value serialization, others to come.”</p> |
| |
| <p>And what is Next?</p> |
| |
| <p>“Our main focus will be developper productivity. We have things such |
| as TimeSeries, Event Sourcing support in Core, easier Assembly of |
| Application Stacks in sight for future releases.We aim at constantly |
| enriching the whole SDK (libraries, extensions, samples and tools) |
| and its documentation. Another objective is to grow the core |
| community through more open participation.”, says Paul. “Yes, there |
| is much visionary work ahead.”, adds Niclas.</p> |
| |
| <p>Find more information at http://qi4j.org and http://qi4j.org/java/2.0/</p> |
| |
| <p>The Qi4j Community is a set of loosely coupled developers working |
| hard to create the most exciting domain oriented application |
| framework for the Java platform. Qi4j is licensed under the very |
| liberal Apache License 2.0.</p> |
| |
| <p>– Qi4j Core Team</p> |
| |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j SDK Release 2.0-RC2</title> |
| <link href="https://polygene.apache.org/2013/04/15/qi4j-2.0-rc2.html"/> |
| <updated>2013-04-15T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2013/04/15/qi4j-2.0-rc2.html</id> |
| <content type="html"><h2 id="qi4j-sdk-release-20-rc2">Qi4j SDK Release 2.0-RC2</h2> |
| |
| <p>Qi4j SDK 2.0-RC2 is ready for review, as another a stepping stone towards |
| the long-awaited Qi4j 2.0.</p> |
| |
| <p>Here is a summary of changes made since 2.0-RC1:</p> |
| |
| <ul> |
| <li>New ValueSerialization SPI with JSON and XML extensions</li> |
| <li>Small API fixes and better error reporting</li> |
| <li>Fixed ManyAssociation equals() method</li> |
| <li>Fixed locking issue inside concurrent Entity modification concern</li> |
| <li>Fixed bug related to HATEOAS Links in the REST Library</li> |
| <li>Enhanced various unit tests and Core TestSupport</li> |
| <li>Documentation and javadoc enhancements</li> |
| <li>Third party libraries version upgrade</li> |
| <li>Build System upgraded to use the way faster Gradle 1.5</li> |
| </ul> |
| |
| <p>The sooner we can vet this release, the sooner we can get to the 2.0 |
| and start working on exciting new features, improvements to |
| non-release libraries and extensions, among many other things. So, |
| please take some time and try this out, report back anything that is |
| not working as expected or other feedback for us to improve on.</p> |
| |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j SDK Release 2.0-RC1</title> |
| <link href="https://polygene.apache.org/2012/12/25/qi4j-2.0-rc1.html"/> |
| <updated>2012-12-25T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2012/12/25/qi4j-2.0-rc1.html</id> |
| <content type="html"><h2 id="qi4j-sdk-release-20-rc1">Qi4j SDK Release 2.0-RC1</h2> |
| |
| <p>Qi4j SDK 2.0-RC1 is ready for review, as a stepping stone towards to |
| the long-awaited Qi4j 2.0.</p> |
| |
| <p>The number of changes from 1.4 are far too many to list here. We will |
| produce a document for this when coming to the 2.0 release.</p> |
| |
| <p>The biggest driver for the 2.0 release is to introduce all the |
| incompatibilities from 1.4. And we have on purpose held back a long |
| list of features that can be added incrementally in the 2.x lifespan.</p> |
| |
| <p>As you probably know already, the http://www.qi4j.org site has also |
| received a make-over;</p> |
| |
| <ul> |
| <li>The Landing page is styled differently.</li> |
| <li>Community pages are on the Landing Page “area”</li> |
| <li>Other Documentation is fully versioned</li> |
| </ul> |
| |
| <p>A version switcher is available in the documentation:</p> |
| |
| <ul> |
| <li>develop = develop branch</li> |
| <li>latest = master branch</li> |
| <li>1.4 = static snapshot of prev SiteVision site.</li> |
| </ul> |
| |
| <p>The sooner we can vet this release, the sooner we can get to the 2.0 |
| and start working on exciting new features, improvements to |
| non-release libraries and extensions, among many other things. So, |
| please take some time and try this out, report back anything that is |
| not working as expected or other feedback for us to improve on.</p> |
| |
| <p>And a BIG THANKS to Paul, who has been working long and hard to push |
| himself (and me a bit) to get this release out the door. Including |
| creating the new website.</p> |
| |
| </content> |
| </entry> |
| |
| <entry> |
| <title>New Qi4j website!</title> |
| <link href="https://polygene.apache.org/2012/05/25/new-website.html"/> |
| <updated>2012-05-25T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2012/05/25/new-website.html</id> |
| <content type="html"><h2 id="new-qi4j-website">New Qi4j website!</h2> |
| |
| <p>After years with SiteVision from Senselogic, the Qi4j community has decided that SiteVision does not fulfill the needs of this community. Primarily, SiteVision can not satisfy some really central needs of open source communities;</p> |
| |
| <p>Learning curve for SiteVision is higher than plain text tool chains. |
| Offline editing is not possible. |
| Distance between Sitevision server and users introduce network latencies that makes the SiteVision experience less than optimal. |
| Versioning is non-trivial. Keeping old versions of the site up and running in parallel will be important as users seek information about older versions of the Qi4j SDK online. |
| Integration with build system and codebase in general is fairly complex process. |
| We are therefor saying a <em>Big THANK YOU</em> to Senselogic and SiteVision for the time past, but we are now excited in moving forward with a new website and an underlying toolchain for it.</p> |
| |
| <p>The site is completely static (for now), and is built from AsciiDoc plain text documents, plus various build-time integrations with the codebase, such as code snippets, and we will expand on this in the future, including development status (dev-status.xml), any version available on website, automatic example output capturing and much more. We also hope to be able to integrate Disqus for user commentary on every page.</p> |
| |
| <p>Already, prior to launching the new site, the new toolchain has already proven itself worthy, as much more content has been generated by the community within a short period of time.</p> |
| |
| <p>“I think this is a great leap forward for us. Although content management systems are powerful, they don’t serve the open source community needs very well.”, says Niclas Hedhman, one of the Qi4j Core Team members.</p> |
| |
| <p>“We have tried to provide a styling format that works across a large set of browsers, operating systems and devices.”, says Paul Merlin, another Core Team member who placed the final touches on the design.</p> |
| |
| <p>Enjoy the new website |
| Any feedback is welcome, either on GitHub or qi4j-dev forum at Google Groups.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j's Future</title> |
| <link href="https://polygene.apache.org/2012/05/02/qi4j-future.html"/> |
| <updated>2012-05-02T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2012/05/02/qi4j-future.html</id> |
| <content type="html"><h2 id="qi4js-future">Qi4j’s Future</h2> |
| |
| <p>Lately, the activity in Qi4j community has been fading. Key members of the community have been caught up in many different activities outside this community, from changing jobs to have additional personal commitments piling up.</p> |
| |
| <p>Speculation has been circulating whether Qi4j will simply die.</p> |
| |
| <p>Today, some of the community leaders met and decided to step up and start forging this project forward. There are a few immediate points which will be addressed first;</p> |
| |
| <ul> |
| <li>New website. Sitevision is causing more problems than it solves for us.</li> |
| <li>Documentation. It has always been lacking, partly due to Sitevision’s barrier to editing. With plain text documentation developers no longer have an excuse not to document the features in Qi4j.</li> |
| <li>Roadmap to 2.0. Establish the features we want to incorporate and have done before 2.0. Effectively ensuring that all compatibility breaking features are included.</li> |
| </ul> |
| |
| <p>We hope that these future efforts will re-instill confidence in the viability of Qi4j in your projects.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @ JFocus 2012 - ReST</title> |
| <link href="https://polygene.apache.org/2012/02/15/jfocus.html"/> |
| <updated>2012-02-15T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2012/02/15/jfocus.html</id> |
| <content type="html"><h2 id="qi4j--jfokus-2012---rest">Qi4j @ JFokus 2012 - ReST</h2> |
| |
| <p>Implementing a REST API today is important in many cases, both as an integration point to your application and as a way for clients to access the application. But there are few frameworks out there that help you fulfil all the constraints of REST, and therefore only makes your API a REST-wannabe. The idiom that’s often missing is HATEOAS. This session will look at how you can build a ReSTful api and applying HATEOAS. The background of this session is the Qi4j at JavaZone 2010 - ReST/DCI presentation.</p> |
| |
| <p><a href="http://www.parleys.com/#st=5&amp;id=3059&amp;sl=6">Watch the video</a></p> |
| |
| <p>Check the presentation slides online http://www.jfokus.se/jfokus12/preso/jf12_TheRoadToRest.pdf</p> |
| |
| <p>On a related note, back in december 2012, Rickard posted “The domain model as REST anti-pattern” in his blog: http://www.jroller.com/rickard/entry/the_domain_model_as_rest</p> |
| |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j SDK Release 1.4</title> |
| <link href="https://polygene.apache.org/2011/08/06/qi4j-sdk-1.4.html"/> |
| <updated>2011-08-06T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2011/08/06/qi4j-sdk-1.4.html</id> |
| <content type="html"><h2 id="qi4j-sdk-release-14">Qi4j SDK Release 1.4</h2> |
| |
| <p>Shanghai, 5 Aug 2011 - The Qi4j community today announced Release 1.4 of the innovative Java framework, Qi4j. This release is a consolidation release of the 1.x development branch, as development focus now is directed towards 2.0. The main new features in version 1.4 is Named Associations and inclusion of an industrial automation inspired alarm system.</p> |
| |
| <h3 id="summary">Summary</h3> |
| |
| <p>The Qi4j Release 1.4 is a consolidation release, to bring together un-released features in the 1.x development branch. This is the last feature release in 1.x, and only serious bugs will be fixed and released. The Qi4j community will now focus on version 2.0 of Qi4j, which will again sport many ground=breaking features.</p> |
| |
| <h3 id="named-associations">Named Associations</h3> |
| |
| <p>In 1.4 it is now possible to map associations by name, and not only as a list. The name is local to the association itself, and operates very much like a Map. The entities referenced are as usual loaded lazily upon get() method.</p> |
| |
| <h3 id="alarm-system">Alarm System</h3> |
| |
| <p>Industrial automation systems have long had alarm systems as the main mechanism for reporting problems in a large system. This metaphor is actually very well suited in today’s complex enterprise systems as well. Alarms are in Qi4j implemented as an entity with a small state machine, dictated by an Alarm Model. The Standard Alarm model has four states; Normal, Activated, Deactivate and Acknowledged. After an alarm is activated, an individual person has to acknowledge the alarm before its state return to normal.</p> |
| |
| <p>Further work will be done in this area for aggregation, notficiation, reporting and visualization.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j SDK Release 1.3</title> |
| <link href="https://polygene.apache.org/2011/04/15/qi4j-sdk-1.3.html"/> |
| <updated>2011-04-15T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2011/04/15/qi4j-sdk-1.3.html</id> |
| <content type="html"><h2 id="qi4j-sdk-release-13">Qi4j SDK Release 1.3</h2> |
| |
| <p>Kuala Lumpur, 15 April 2011 - The Qi4j community today announced Release 1.3 of the innovative Java framework, Qi4j. This release is significant for several customers, moving to deploy Qi4j in business critical 24/7 systems. “We now feel that the core features of Qi4j are as stable as software systems ever get. Qi4j is now being deployed at a major investment bank in the risk pricing domain.”, said Niclas Hedhman, co-inventor of Qi4j together with Rickard Öberg, who added “Qi4j has really proved itself in StreamFlow, and I am convinced that many of our paradigms will stand the test of time.”</p> |
| |
| <p>This release sports many new features, such as Solr Indexing, JMX integration, Circuit-breaker library, innovative API for dealing with I/O, functional paradigms and much more, but an important focus was to stabilize the many libraries and extensions.</p> |
| |
| <p>The main new features are listed below. The community now sets its eyes ahead towards the next release(s), which will include an industrial automation alarm system, JMX aggregation for the cloud, Entity Viewers via the Rest API and a whole lot more documentation and test coverage. We all look forward to this and many other things to come from Qi4j, the most exciting, technology challenging project in the Open Source Java world.</p> |
| |
| <h3 id="io-api">I/O API</h3> |
| |
| <p>Rickard Öberg is once again inventing new ways to do common things. The I/O API correctly separates the concerns of reading, writing, exception handling, transformation and filtering. This resulted in a DSL like way of writing stream handling code. The I/O API is completely independent of everything in Qi4j and may be used separately. We may release it as a separate artifact in the future.</p> |
| |
| <h3 id="jmx-integration">JMX Integration</h3> |
| |
| <p>By addding a single line of code, you will get the application structure represented in your JMX “tree view”. Starting with a “Qi4j” node, under which each Qi4j Application is listed, followed by Layers, Modules and the Composites. All Services’ configuration instances are exposed and can be changed via JMX, as can services be stopped, started and restarted.</p> |
| |
| <h3 id="osgi-integration">OSGi Integration</h3> |
| |
| <p>All of Qi4j is now OSGi-compliant. That means that all jars are OSGi bundles, with imports and exports. On top of that, this release also contains the beginning of a OSGi-specific library, which allows Qi4j Services to be exported as OSGi services and vice versa. This library is still in beta.</p> |
| |
| <h3 id="circuit-breaker">Circuit Breaker</h3> |
| |
| <p>The CircuitBreaker library allows external resources to be monitored for health and taken offline when facing trouble. This is also signalled via JMX for human intervention.</p> |
| |
| <h3 id="solr-indexing">Solr Indexing</h3> |
| |
| <p>To allow free-text searches of content in entities, Qi4j now has integrated Solr via the Qi4j Indexing/Query extension mechanism. It is not possible to do generic queries via this extension, but it leveraging the Named Query feature. Free-text search enable your data in existing entitystores by using the Reindexer extension.</p> |
| |
| <h3 id="unitofwork-retry">UnitOfWork Retry</h3> |
| |
| <p>The UnitOfWorkConcern now handles an optional UnitOfWorkRetry annotation, allowing full re-runs of work. Literally a single annotation allows developers to add retry logic (or remove the complex retry logic already in place).</p> |
| |
| <h3 id="json-format-now-handles-maps">JSON format now handles Maps</h3> |
| |
| <p>The JSON serializer/deserializer has been equipped to handle Maps, by named properties instead of a java serialized map as was preveiously the case. The new deserializer logic is still compatible with the old format.</p> |
| |
| <h3 id="job-scheduler">Job Scheduler</h3> |
| |
| <p>A new library, org.qi4j.library.scheduler, can now launch jobs according to CRON formatted schedules.</p> |
| |
| <h3 id="specifications-in-assembly">Specifications in Assembly</h3> |
| |
| <p>The ModuleAssembly system has been revised heavily, to allow different parts of the application to apply assembly information to composites. This allows for near functional programming style of setting up composites.</p> |
| |
| <h3 id="iterables-utility">Iterables Utility</h3> |
| |
| <p>Qi4j is innovating again, with a utility to do functional programming style in Java for Iterables. In this first release, the utility only contains the most basic operations, but will be extended over time.</p> |
| |
| <h3 id="release-notes---qi4j---version-13">Release Notes - Qi4j - Version 1.3</h3> |
| |
| <p><em>New Features</em></p> |
| |
| <ul> |
| <li>QI-277 - JMX services</li> |
| <li>QI-281 - Solr query/indexing</li> |
| <li>QI-284 - Circuit breaker library</li> |
| <li>QI-285 - Active → Available</li> |
| <li>QI-288 - Add a concern for handling retry on ConcurentModification</li> |
| <li>QI-289 - Create a library for a job scheduler</li> |
| <li>QI-291 - New API for doing I/O</li> |
| <li>QI-295 - Exporter of Qi4j Services to OSGi</li> |
| <li>QI-296 - Importer of OSGi services into the Qi4j world.</li> |
| <li>QI-300 - Add test helper for scenarios</li> |
| <li>QI-309 - Concern to handle ConcurentEntityModificationException and retry the UnitOfWork</li> |
| <li>QI-320 - Maps in JSON format</li> |
| <li>QI-321 - Specification driven assembly</li> |
| <li>QI-341 - Support JodaTime natively in the toJSON() system.</li> |
| </ul> |
| |
| <p><em>Improvements</em></p> |
| |
| <ul> |
| <li>QI-275 - Enhance the community documentation to spell out the trust issues in Core.</li> |
| <li>QI-297 - Capture NullPointerException slightly more gracefully in ValueBuilderFactory</li> |
| <li>QI-299 - Replace ServiceQualifier method with Specification</li> |
| <li>QI-302 - Capture which class is declared final</li> |
| <li>QI-305 - ObjectDescriptor in ModuleSPI</li> |
| <li>QI-312 - Patch for Gradle build system</li> |
| <li>QI-313 - Upgrade Neo4j extension to ver 1.2</li> |
| <li>QI-317 - Obscure Exception can be improved.</li> |
| <li>QI-326 - Cobertura reports in the build.</li> |
| <li>QI-339 - Add support for variables in RDF named queries</li> |
| </ul> |
| |
| <p><em>Bug</em></p> |
| |
| <ul> |
| <li>QI-272 - Changing properties in Lifecycle sometimes doesn’t work</li> |
| <li>QI-292 - ServiceLoader mechanism for Qi4j Runtime implementation is really awkward.</li> |
| <li>QI-294 - qi4j-libraries: rdf/src/main/java/org/qi4j/library/rdf/model/ApplicationVisitor.java is not compilable</li> |
| <li>QI-303 - Incorrect generics type for imported services.</li> |
| <li>QI-304 - Composite extends Serializable</li> |
| <li>QI-306 - Exception thrown when @Using on complex generic types</li> |
| <li>QI-308 - The @UnitOfWorkDiscardOn annotation does not have runtime Retention</li> |
| <li>QI-331 - BuildVersion class is in wrong package.</li> |
| <li>QI-332 - Generated POMs doesn’t include the &lt;repository&gt; sections needed.</li> |
| <li>QI-333 - Qi4j Runtime needs a way to bootstrap in OSGi</li> |
| <li>QI-334 - Maven source jars are not generated and uploaded.</li> |
| <li>QI-335 - Maven javadoc jars are not generated and uploaded</li> |
| <li>QI-337 - Package org.qi4j.api.specification is imported more than once in Core Runtime OSGi bundle declaration.</li> |
| <li>QI-340 - NPE in ModuleUnitOfWork which should be a informative Exception</li> |
| </ul> |
| |
| <p><em>Task</em></p> |
| |
| <ul> |
| <li>QI-314 - Creation of proper SDK</li> |
| <li>QI-315 - Define binary tarball layout</li> |
| <li>QI-316 - Define source tarball layout</li> |
| </ul> |
| |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j moves to Gradle</title> |
| <link href="https://polygene.apache.org/2011/02/21/gradle.html"/> |
| <updated>2011-02-21T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2011/02/21/gradle.html</id> |
| <content type="html"><h2 id="qi4j-moves-to-gradle">Qi4j moves to Gradle</h2> |
| |
| <p>The Qi4j project has discontinued its use of Maven and introduced Gradle as its build system.</p> |
| |
| <p>After fighting the Maven build system for years, and constantly looking for alternatives, the Qi4j community has finally decided to grab the bull by its horn and throw it out of the arena. Maven imposes a very rigid model on how to define your project, but has a weak internal model on how a build is executed. We therefor often see conflicts between plugins, plugins make too much assumptions and ignoring settings that are actually provided formally, and not to even mention the fundamentally flawed versioning system.</p> |
| |
| <p>After a few evaluations of alternatives (Gradle &amp; Buildr were the strong contenders), we have finally settled for Gradle (http://www.gradle.org and http://gradle.codehaus.org). Contrary to Maven, Gradle provides a strong internal model for build systems, but a flexible way to establish that model. In essence, in Maven, the declaration is static and the execution is ill-defined, and in Gradle the model is established programmatically and the execution is done off the model.</p> |
| |
| <p>This allows for a great deal more flexibility. Gradle also have nice integration with Ant and Ivy, so Gradle’s dependency system is handled by Ivy (without Ivy’s XML) and it is easy to use any build tool that provides an Ant task, again programmatically.</p> |
| |
| <p>The absence of XML is refreshing. So instead of;</p> |
| |
| <div class="highlighter-rouge"><pre class="codehilite"><code>&lt;dependencies&gt; |
| &lt;dependency&gt; |
| &lt;groupId&gt;org.qi4j.core.runtime&lt;/groupId&gt; |
| &lt;artifactId&gt;qi4j-core-api&lt;/artifactId&gt; |
| &lt;version&gt;1.3&lt;/version&gt; |
| &lt;/dependency&gt; |
| &lt;dependency&gt; |
| &lt;groupId&gt;org.qi4j.core.runtime&lt;/groupId&gt; |
| &lt;artifactId&gt;qi4j-core-runtime&lt;/artifactId&gt; |
| &lt;version&gt;1.3&lt;/version&gt; |
| &lt;scope&gt;test&lt;/scope&gt; |
| &lt;/dependency&gt; |
| &lt;/dependencies&gt; |
| </code></pre></div> |
| |
| <p>The declaration of a dependency is done programmatically in Groovy code, so it can even be conditional and so forth, but the normal way is;</p> |
| |
| <div class="highlighter-rouge"><pre class="codehilite"><code>dependencies { |
| compile "org.qi4j.core:qi4j-core-api:1.2" |
| testRuntime "org.qi4j.core:qi4j-core-runtime:1.2" |
| } |
| </code></pre></div> |
| |
| <p>And YES, there is a difference between testCompile and testRuntime. 1 line instead of Maven’s 5-6 lines per dependency. And in true Ivy fashion, one can create one’s own scopes, although I doubt we need that in the near future.</p> |
| |
| <p>The dependency system is worth mentioning; Since Gradle understand multi module projects very well, again unlike Maven, it resolves the build order according to the tasks needed. This means that an upstream module’s tests can depend on a downstream module’s output. And even if the build is executed in the upstream module, the downstream module will be recompiled if any changes happened in it. You never need to worry about “Oh, I forgot to recompile X” again…</p> |
| |
| <p>Gradle does not need an installation. The Qi4j SDK project comes with a Gradle bootstrapper, so it will install itself. Very nice.</p> |
| |
| <p>Qi4j is still committed to produce Maven artifacts for publishing to Maven repositories, and the upcoming 1.3 release will be the first one using Gradle for this.</p> |
| |
| <p>We hope that this will make Qi4j development more enjoyable.</p> |
| |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j SDK 1.2 Released</title> |
| <link href="https://polygene.apache.org/2010/10/23/qi4j-sdk-1.2.html"/> |
| <updated>2010-10-23T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2010/10/23/qi4j-sdk-1.2.html</id> |
| <content type="html"><h2 id="qi4j-sdk-12-released">Qi4j SDK 1.2 Released</h2> |
| |
| <p>The Qi4j community today announced the 3rd installment of the innovative Java framework, Qi4j. The main new features includes, SQL EntityStore, SQL Indexing/Querying, Caching SPI and a Service Qualifier API.</p> |
| |
| <p>Additional to the new features, numerous improvements were made along side with significant internal changes. Here is a break down of the more important issues;</p> |
| |
| <p>The Cache SPI is another important new feature. The pluggable Cache SPI means that it is equally simple to add new caching implementations as it is to add Entity Store implementations, in fact even easier since the SPI is very simple. The entity stores implementations that leverages the MapEntityStore layer in the Qi4j Runtime (which most do), will automatically benefit from the plugged in Cache.</p> |
| |
| <p>The support of SQL has been a long-standing requested item, and thanks to new community blood, we now have the first generation of both EntityStore implementation as well as using SQL backends for querying and indexing. These two implementations is a testament that the Qi4j data model is truly flexible. The current implementation does not, however, support mapping of existing tables and expect to own the tables it needs. PostgreSQL and MySQL are the first support RDBMSes, and more are bound to follow in upcoming releases.</p> |
| |
| <p>SLF4J was introduced as a dependency in Qi4j Core, and slowly starting to add additional debug and trace statements in the internals of Qi4j Runtime to aid in troubleshooting.</p> |
| |
| <p>Qi4j community has also noted a JDK bug, which surface as a java.lang.ArrayStoreException, but is really a java.lang.TypeNotPresentException that gets treated incorrectly deep inside com.sun packages. This release did not manage to work around this, but we will in the next release.</p> |
| |
| <p>The bugs fixed are of various nature. Some of the bugs listed in the release notes are possibly fixed prior to Qi4j 1.1, but not identified correctly. The two most important bug fixes are QI-247, Incorrect delegation of Object methods in TransientComposite, and QI-241 regarding the matching algorithm for @AppliesTo. The latter may seriously affect existing applications to include fragments when it previously didn’t.</p> |
| |
| <h3 id="release-notes---qi4j-sdk-12">Release Notes - Qi4j SDK 1.2</h3> |
| |
| <p><em>New Features</em></p> |
| |
| <ul> |
| <li>QI-192 - Support indexing/querying of collection properties</li> |
| <li>QI-260 - Introduce advanced cache (ehcache?) as a general purpose caching layer for all EntityStores</li> |
| <li>QI-266 - Introduction of Service Qualifier API</li> |
| <li>QI-268 - Cache SPI introduced in Core.</li> |
| <li>QI-269 - Cache Extension - Ehcache</li> |
| </ul> |
| |
| <p><em>Improvements</em></p> |
| |
| <ul> |
| <li>QI-58 - Property → Property .. → .. Querying</li> |
| <li>QI-232 - Entity Type resolution is flawed</li> |
| <li>QI-249 - Visitor-pattern to work with throws -declaration</li> |
| <li>QI-263 - Replace JDK logging with SLF4J</li> |
| <li>QI-264 - Use exception handling pattern in visitors</li> |
| <li>QI-265 - Introduce SLF4J as logging framework.</li> |
| <li>QI-267 - EntityStoreSPI.applyChanges() should have the EntityStoreUnitOfWork passed along.</li> |
| </ul> |
| |
| <p><em>Bugs Fixed</em></p> |
| |
| <ul> |
| <li>QI-214 - Missing implementations of newEqualsPredicate</li> |
| <li>QI-241 - AppliesTo match algorithm should be a OR condition in the targeted elements list</li> |
| <li>QI-247 - Broken delegation of Object methods in TransientComposite</li> |
| <li>QI-253 - Remaining bugs on moving to ASM</li> |
| <li>QI-254 - FragmentClassLoader causes UnsupportedClassVersionError in most tests</li> |
| <li>QI-255 - Qi4j tests do not take @Queryable(false) into account</li> |
| <li>QI-256 - UndeclaredThrowableException - possibly related to new class-generation</li> |
| <li>QI-257 - ConcernOf/SideEffectOf not working with Property&lt;SomeType&gt;</li> |
| <li>QI-259 - JSONMapEntityStore did not update lastModified in entitystate</li> |
| </ul> |
| |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @ JavaZone 2010 - ReST/DCI</title> |
| <link href="https://polygene.apache.org/2010/09/18/javazone.html"/> |
| <updated>2010-09-18T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2010/09/18/javazone.html</id> |
| <content type="html"><h2 id="qi4j--javazone-2010---restdci">Qi4j @ JavaZone 2010 - ReST/DCI</h2> |
| |
| <p>Qi4j at JavaZone 2010, Oslo, Norway. Rickard Öberg presented “Implementing a Rest API with DCI and Qi4j” at JavaZone on the 8 Sept 2010.</p> |
| |
| <p>Implementing a REST API today is important in many cases, both as an integration point to your application and as a way for clients to access the application. But there are few frameworks out there that help you fulfil all the constraints of REST, and therefore only makes your API a REST-wannabe. This session will look at how you can use Qi4j along with the DCI pattern to implement a truly RESTful API, that follows all the constraints. We will look at how DCI maps to the RESTful way of thinking about web API’s, and how Qi4j can help with the actual implementation.</p> |
| |
| <p><a href="https://vimeo.com/28761778">Watch the video</a>.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @ Apache Roadshow Shanghai</title> |
| <link href="https://polygene.apache.org/2010/08/30/apache-roadshow-shanghai.html"/> |
| <updated>2010-08-30T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2010/08/30/apache-roadshow-shanghai.html</id> |
| <content type="html"><h2 id="qi4j--apache-roadshow-shanghai">Qi4j @ Apache Roadshow Shanghai</h2> |
| |
| <p>Qi4j was invited to present at the Apache Roadshow Shanghai 2010, largely due to Niclas Hedhman is currently living there and is an Apache Member. Niclas has reflected over how the presentation was done and some reactions from the audience. You can read all about it on his <a href="http://www.jroller.com/niclas/entry/qi4j_in_shanghai_part_2">blog</a>.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j SDK 1.1 is out!</title> |
| <link href="https://polygene.apache.org/2010/06/17/qi4j-1.1.html"/> |
| <updated>2010-06-17T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2010/06/17/qi4j-1.1.html</id> |
| <content type="html"><h2 id="qi4j-sdk-11-is-out">Qi4j SDK 1.1 is out!</h2> |
| |
| <p>Qi4j community hereby announces the availability of Release 1.1 of Qi4j Core, Qi4j Libraries and Qi4j Extensions.</p> |
| |
| <p>Qi4j version 1.1 is now available. It is mostly an bug fix update, some SPI changes and a contributed EntityStore for EC2/S3 using Infinispan. The author, Philippe Van Dyck, explains;</p> |
| |
| <ul> |
| <li>Infinispan memory cache eviction mechanism is based on a memory threshold (i.e. you specify 100MB of memory for the cache in the store config)</li> |
| <li>RHQ monitoring with Infinispan plugin</li> |
| <li>Entries are gzipped on S3</li> |
| <li>Wicket load balancing is done with infinispan (custom pagestore)</li> |
| <li>I use a directory structure for qi4j identities (“Entity1/key1”) with a webdav interface to it, so one can mount Qi4j’s store in Mac OSX Finder.</li> |
| <li>EC2 S3_PING is used in jgroups to join the cluster of qi4j stores</li> |
| <li>Each Qi4j UnitOfWork is transaction backed with rollback support</li> |
| <li>S3 (blobstore) access is using Infinispan synchronous and transacted mode</li> |
| <li>EC2 images only contain the wicket web interface with a jetty https connector / when added to amazon elastic load balancer, Infinispan connects to the cache cluster and wicket begins to server load balanced requests - yep, just like that</li> |
| <li>Current performance, as reported by RHQ, from EC2 to S3, is around 60ms per read/write from S3 (rough average). Elastic load balancing load tests with loadStorm are not done yet. But I don’t know any NOSQL alternative offering a permanent transacted monitored compressed Finder-mounted clustered load-balanced store.</li> |
| </ul> |
| |
| <p>Development continues towards 1.2 release, which includes better OSGi support, dropping CGLib dependency due to classloading issues, Google AppEngine support and hopefully the DCI support as developed in the StreamFlow project.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j SDK 1.0 has been released!</title> |
| <link href="https://polygene.apache.org/2010/01/28/qi4j-1.0.html"/> |
| <updated>2010-01-28T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2010/01/28/qi4j-1.0.html</id> |
| <content type="html"><h2 id="qi4j-sdk-10-has-been-released">Qi4j SDK 1.0 has been released!</h2> |
| |
| <p>Qi4j SDK 1.0 has now been released. After 2 years of hard work, we have finally made an official release available. It contains all the core features of Qi4j, such as composites made from fragments like mixins, concerns, side-effects and constraints, and also the libraries and extensions that are useful for most application development.</p> |
| |
| <p>During this weeks JFokus conference in Stockholm, Sweden, the Qi4j community released Qi4j SDK 1.0. Rickard Öberg made two presentations in association with the conference, focusing on how Qi4j and Composite Oriented Programming makes working with domain models on the Java platform easier compared to the usual POJO approach typically used in todays application development.</p> |
| |
| <p>Qi4j is a significant step forward for the Java platform, with its focus on Domain Driven Design and support for the <a href="http://www.artima.com/articles/dci_vision.html">Data-Context-Interaction</a> paradigm that is currently being worked on by Trygve Reenskaug as a way to revive object-orientation.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Quicker Frameworks</title> |
| <link href="https://polygene.apache.org/2010/01/25/quicker-frameworks.html"/> |
| <updated>2010-01-25T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2010/01/25/quicker-frameworks.html</id> |
| <content type="html"><h2 id="quicker-frameworks">Quicker Frameworks</h2> |
| |
| <p>Usually, a framework is created to make development faster by hiding the technical machinery underneath. Motivation behind Qi4j was very different. In this article written by Rickard Öberg for <a href="http://domaindrivendesign.org/">DomainDrivenDesign.org</a>, he talks about how this domain-centric application development framework makes it quicker.</p> |
| |
| <p>You can find the article on the DDD website <a href="http://domaindrivendesign.org/library/oberg_2009">here</a>.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @ 0redev 2010 - DCI</title> |
| <link href="https://polygene.apache.org/2010/01/25/oredev.html"/> |
| <updated>2010-01-25T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2010/01/25/oredev.html</id> |
| <content type="html"><h2 id="qi4j--redev-2010---dci">Qi4j @ Øredev 2010 - DCI</h2> |
| |
| <p>In this presentation that was recorded during Øredev 2009, Rickard Öberg presents how to use Qi4j to implement the DCI principles. DCI, or Data-Context-Interaction, is a new paradigm created by Trygve Reenskug, inventor of the MVC pattern.</p> |
| |
| <p>The presentation can be found <a href="http://www.oredev.org/prod/oredev/site.nsf/docsbycodename/session?opendocument&amp;sid=88EF79931A074A1AC125759A003AB0ED&amp;track=24116556E47101EAC12575A50049A141&amp;day=5">here</a>, and it was part of a DCI track with Trygve and Jim Coplien, who’s presentations you can find <a href="http://www.oredev.org/prod/oredev/site.nsf/docsbycodename/session?opendocument&amp;sid=B5D8BF332A282FEEC1257599003E5694&amp;track=24116556E47101EAC12575A50049A141&amp;day=5">here</a> and <a href="http://www.oredev.org/prod/oredev/site.nsf/docsbycodename/session?opendocument&amp;sid=9986C37D739F8D39C12575940064F272&amp;track=24116556E47101EAC12575A50049A141&amp;day=5">here</a>.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @ JavaZone 2009 - Persistence</title> |
| <link href="https://polygene.apache.org/2009/09/03/javazone.html"/> |
| <updated>2009-09-03T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2009/09/03/javazone.html</id> |
| <content type="html"><h2 id="qi4j--javazone-2009---persistence">Qi4j @ JavaZone 2009 - Persistence</h2> |
| |
| <p>JavaZone 2009 is held as usual in Oslo, Norway, on the 9th and 10th of September 2009. It is set to be an exciting event, Scandinavias larges Java Developer’s conference, but covers adjacent languages as well, such as Scala, Groovy and JRuby. Qi4j is represented with a presentation by Niclas Hedhman about “Qi4j Persistence” (10th Sept, 11:45). The short time available will only allow for the basics of Qi4j Persistence to be covered, but the audience is expected to get tantalized and curious about our great framework for rich domain model development.</p> |
| |
| <p>Many other great speakers, both local Norwegians as well as International ones, will be present and all is set for a great conference, again…</p> |
| |
| <p>Niclas will of course be available most of the conference time for face-to-face discussions, feedback and questions on Qi4j topics.</p> |
| |
| <p>See you in Oslo.</p> |
| |
| <p><a href="http://video.javazone.no/talk/46284029">Watch the video</a></p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @ JFocus 2009 - COP / DDD</title> |
| <link href="https://polygene.apache.org/2009/05/10/jfocus.html"/> |
| <updated>2009-05-10T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2009/05/10/jfocus.html</id> |
| <content type="html"><h2 id="qi4j--jfocus-2009---cop--ddd">Qi4j @ JFocus 2009 - COP / DDD</h2> |
| |
| <p>At JFokus earlier this year Rickard Öberg was interviewed by Dan Bergh Johnsson about Composite Oriented Programming and Qi4j.</p> |
| |
| <p>The interview covers some of the rationale behind Composite Oriented Programming and the Qi4j project, its focus on DDD and why Java was chosen as language for the implementation. You can see the interview online on <a href="http://www.youtube.com/watch?v=RcJqcJND42s">YouTube</a>.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j 0.7 Released</title> |
| <link href="https://polygene.apache.org/2009/04/20/qi4j-0.7.html"/> |
| <updated>2009-04-20T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2009/04/20/qi4j-0.7.html</id> |
| <content type="html"><h2 id="qi4j-07-released">Qi4j 0.7 Released</h2> |
| |
| <p>Query Cleanup.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j 0.6 Released</title> |
| <link href="https://polygene.apache.org/2009/02/20/qi4j-0.6.html"/> |
| <updated>2009-02-20T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2009/02/20/qi4j-0.6.html</id> |
| <content type="html"><h2 id="qi4j-06-released">Qi4j 0.6 Released</h2> |
| |
| <p>Goal of Full Test Coverage in Core.</p> |
| |
| <p>Break-up of project.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>DDD support in Qi4j explained</title> |
| <link href="https://polygene.apache.org/2009/02/19/ddd-in-qi4j-explained.html"/> |
| <updated>2009-02-19T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2009/02/19/ddd-in-qi4j-explained.html</id> |
| <content type="html"><h2 id="ddd-support-in-qi4j-explained">DDD support in Qi4j explained</h2> |
| |
| <p>Domain Driven Design has a special status in Qi4j, and its tactical bits are embraced in Qi4j itself. These includes Entities, Services and Values. In Rickard’s blog entry <a href="http://www.jroller.com/rickard/entry/qi4j_and_state_modeling">Qi4j and state modeling</a>, he covers these topics in a relatively easy to understand and pedagogic format. A highly recommended read for people who want to get a quick overview of what Qi4j is really about.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @ Arskonference 2009</title> |
| <link href="https://polygene.apache.org/2009/01/10/arskonference.html"/> |
| <updated>2009-01-10T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2009/01/10/arskonference.html</id> |
| <content type="html"><h2 id="qi4j--rskonference-2009">Qi4j @ Årskonference 2009</h2> |
| |
| <p>It is indeed exciting times to be a Java developer in. Lots of stuff is happening in the Java space and it’s hard to predict what kind of development space we will be working in in the future.</p> |
| |
| <p>Will all our Java code run in a cloud somewhere ?</p> |
| |
| <p>Is “domain centric application development” the new magic wand we should be waving at our Java code ?</p> |
| |
| <p>Join us and meet Rickard Öberg and get an in-depth view on his new exciting project, Qi4j (qi4j.org)</p> |
| |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j 0.5 Released</title> |
| <link href="https://polygene.apache.org/2009/01/09/qi4j-0.5.html"/> |
| <updated>2009-01-09T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2009/01/09/qi4j-0.5.html</id> |
| <content type="html"><h2 id="qi4j-05-released">Qi4j 0.5 Released</h2> |
| |
| <p>Stabilization of Core</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @ 0redev 2008 - Qi4j</title> |
| <link href="https://polygene.apache.org/2008/11/17/oredev-qi4j.html"/> |
| <updated>2008-11-17T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2008/11/17/oredev-qi4j.html</id> |
| <content type="html"><h2 id="qi4j--0redev-2008---qi4j">Qi4j @ 0redev 2008 - Qi4j</h2> |
| |
| <p>Qi4j - code, examples and demo</p> |
| |
| <p>Qi4j is an application development framework that promises to make it easier to create applications using DDD. But how does it accomplish this, and to what extent? This session will take us through the creation of a simple application using Qi4j and discuss the different features that simplify the developers life and makes it easier to apply agile practices.</p> |
| |
| <p>Watch the whole session online <a href="http://www.viddler.com/v/41621948">here</a>.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j 0.4 Released</title> |
| <link href="https://polygene.apache.org/2008/09/19/qi4j-0.4.html"/> |
| <updated>2008-09-19T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2008/09/19/qi4j-0.4.html</id> |
| <content type="html"><h2 id="qi4j-04-released">Qi4j 0.4 Released</h2> |
| |
| <p>CleanUp after the 0.3 changes.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @ JavaZone 2008 - Composite Oriented Programming with Qi4j</title> |
| <link href="https://polygene.apache.org/2008/09/15/javazone-cop.html"/> |
| <updated>2008-09-15T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2008/09/15/javazone-cop.html</id> |
| <content type="html"><h2 id="qi4j--javazone-2008---composite-oriented-programming-with-qi4j">Qi4j @ JavaZone 2008 - Composite Oriented Programming with Qi4j</h2> |
| |
| <p>In the current programming culture we have lost the OOP idea of objects containing both logic and state, the idea of reuse has largely failed due to impractical mechanisms, and combining pieces of code into larger structures using AOP has not quite delivered on its promises. Building large-scale software also gives us challenges with regard to complexity, enforcing architectural rules and codebase explosion. What if we could look at what we have and figure out a new way to address these problems, while promoting the idea from domain oriented modeling and retaining what works with what we have now? Composite Oriented Programing is a new way of dealing with these problems, and this presentation will show how the Qi4j implementation on the Java platform will enable you to get more done with less work, and in a way that allows you to avoid the mentioned problems. It will describe the COP terminology and show examples on how to use Qi4j to implement domain oriented models.</p> |
| |
| <p>See the whole presentation online <a href="http://javazone.no/incogito/session/Qi4j+-+a+new+approach+to+old+problems.html">here</a>.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j 0.3 Released</title> |
| <link href="https://polygene.apache.org/2008/08/08/qi4j-0.3.html"/> |
| <updated>2008-08-08T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2008/08/08/qi4j-0.3.html</id> |
| <content type="html"><h2 id="qi4j-03-released">Qi4j 0.3 Released</h2> |
| |
| <p>The 3rd pre-final release from the Qi4j community marks a new relatively stable milestone on the continued path to a production ready system. The 0.3 release is the 3rd major re-write of the Qi4j Core Runtime, after many lessons learned from previous implementations.</p> |
| |
| <p>“The current Qi4j Core Runtime is soooo much lighter and easier to work with, both for the Core developers as well as extensions and advanced libraries developers.”, says Rickard Öberg, the Qi4j project lead. “We now have most of the ingredients in place for developers who want to delve into DDD without having to do everything from scratch. Having a toolkit to work with that speaks the same language as themselves, all the way from layers down to individual parameter constraints, makes life so much easier, and minimizes the need for translation from idea to actual code.”</p> |
| |
| <p>“We now feel confident that the Qi4j Core Runtime has a good design and is stable enough to not go through any more disruptive changes. This enables us to move away from a feature-boxed release cycle into a more agile time-boxed one. This will enable more people to participate and use the Qi4j platform.”, says Niclas Hedhman. He continues; “Stefano Mazzocchi (Apache) once told me; Only projects with Bad Code, Great Vision will build strong communities. And I think Qi4j is exactly at this point right now. The vision for a better future is extremely promising, and we have so many areas that we need help to implement. Combined with a no barrier to write and commit code/documentation for all parts except Qi4j Core, we have the setup for accelerated participation in the months to come.”</p> |
| |
| <p>With this release the Qi4j community moves from a feature-boxed release cycle into a time-boxed one. First week every month, there will be a release containing the work from previous release. Issues will be worked on in a semi-prioritized order and the participating developers are urged to keep the codebase stable towards the release date.</p> |
| |
| <p>Rickard is keen to point out the Application Visualizer that has been started since the 0.2 release, “Another key tool which this release introduces is the beginning of the application visualizer, which automatically shows what your application look like. One of the main disadvantages of earlier frameworks is that the developers typically felt out of control and unable to see what was going on. When you have so many pieces working together it is important to get the big picture, and this is what we are now enabling.”</p> |
| |
| <p>“Our immediate next steps involves a new remote Entity Store, getting the application visualization tool ready, changes to the Query API including named and native queries, and we are looking into introducing more explicit Composite archetypes, such as TransientComposite and ValueComposite”, says Rickard and then goes back coding.</p> |
| |
| <p>The rest of us just can’t wait to see what is coming up next.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j 0.2 Released</title> |
| <link href="https://polygene.apache.org/2008/06/06/qi4j-0.2.html"/> |
| <updated>2008-06-06T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2008/06/06/qi4j-0.2.html</id> |
| <content type="html"><h2 id="qi4j-02-released">Qi4j 0.2 Released</h2> |
| |
| <p>Full Unit Test &amp; Javadoc on Core API.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j 0.1 Released</title> |
| <link href="https://polygene.apache.org/2008/04/14/qi4j-0.1.html"/> |
| <updated>2008-04-14T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2008/04/14/qi4j-0.1.html</id> |
| <content type="html"><h2 id="qi4j-01-released">Qi4j 0.1 Released</h2> |
| |
| <p>Freeze of Core API.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @ JFocus 2008 - Composite Oriented Programming</title> |
| <link href="https://polygene.apache.org/2008/01/30/jfocus-cop.html"/> |
| <updated>2008-01-30T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2008/01/30/jfocus-cop.html</id> |
| <content type="html"><h2 id="qi4j--jfocus-2008---composite-oriented-programming">Qi4j @ JFocus 2008 - Composite Oriented Programming</h2> |
| |
| <p>OOP neglects the need of objects to adjust its behavior depending on the context. “John is a parent and programmer in the city, but a hunter and food in the jungle.”. Same object, different contexts. OOP has also not fulfilled its promise of re-usability, partly due to such static behavior and partly due to its inability to deal with fine-granularity of states and behaviors. Composite Oriented Programming addresses these issues, and Qi4J is an implementation available to Java programmers today.</p> |
| |
| <p>Check the presentation slides online <a href="http://www.jfokus.se/jfokus08/pres/jf08-CompositeOrientedProgrammingWithQi4j.pdf">here</a>.</p> |
| </content> |
| </entry> |
| |
| <entry> |
| <title>Qi4j @Øredev 2007 - Composite Oriented Programming</title> |
| <link href="https://polygene.apache.org/2007/11/13/oredev-cop.html"/> |
| <updated>2007-11-13T00:00:00+08:00</updated> |
| <id>https://polygene.apache.org/2007/11/13/oredev-cop.html</id> |
| <content type="html"><h2 id="qi4j-redev-2007---composite-oriented-programming">Qi4j @Øredev 2007 - Composite Oriented Programming</h2> |
| |
| <p>OOP neglects the need of objects to adjust its behavior depending on the context. “John is a parent and programmer in the city, but a hunter and food in the jungle.”. Same object, different contexts. OOP has also not fulfilled its promise of re-usability, partly due to such static behavior and partly due to its inability to deal with fine-granularity of states and behaviors.</p> |
| |
| <p>Composite Oriented Programming addresses these issues, and Qi4J is an implementation available to Java programmers today.</p> |
| |
| <p>See the <a href="http://archive.oredev.org/toppmeny/conference/java/qi4jcompositeorientedprog.4.76e8b1c6112f078db498000125951.html">Øredev</a> archive.</p> |
| |
| <p>This presentation has been followed by a 6 hours Workshop.</p> |
| |
| </content> |
| </entry> |
| |
| |
| </feed> |
| |