blob: 980cf99074029ee1510363f2edb5df125fa08005 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Qi4j SDK Release 2.0</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Polygene™ is a community based effort exploring Composite Oriented Programming for domain centric application development. This includes evolved concepts from Aspect Oriented Programming, Dependency Injection and Domain Driven Design.
Composite Oriented Programming allows developers to work with 'fragments', smaller than classes, and 'compose' fragments into larger 'composites' which acts like the regular objects. Apache Polygene™ also tackles the enforcement of application composition, i.e. composites are declared in modules, modules are contained in layers and access between layers are controlled/enforced.
">
<meta name="author" content="The Apache Polygene™ Project">
<meta name="keywords" content="cop, composite oriented programming, ddd, domain driven design, composite, mixin, fragment, constraint, concern, side-effect, aop, aspect oriented programming, application, layer, module, structure, java, library, toolkit, framework">
<!-- Le styles -->
<link href="/landing-resources/css/bootstrap.css" rel="stylesheet">
<link href="/landing-resources/css/font-awesome.css" rel="stylesheet">
<style type="text/css">
body {
padding-top: 70px;
padding-bottom: 40px;
}
</style>
<link href="/landing-resources/css/bootstrap-responsive.min.css" rel="stylesheet">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Fav and touch icons -->
<link rel="shortcut icon" type="image/png" href="/landing-resources/ico/favicon.png">
<!-- Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-89723617-1', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="/"><img src="/landing-resources/img/feather.png" width="64"/> Apache <strong>Polygene™</strong></a>
<div class="nav-collapse collapse">
<ul class="nav">
<li><a href="/news.html"><i class="icon-rss"></i> News</a></li>
<li><a href="/download.html"><i class="icon-download"></i> Download</a></li>
<li class="dropdown">
<a class="dropdown-toggle" role="button" data-toggle="dropdown" data-target="#" href="#">
<i class="icon-book"></i> Documentation <b class="caret"></b>
</a>
<ul class="dropdown-menu" role="menu">
<li role="menuitem"><a href="/java/latest/index.html"><i class="icon-caret-right"></i> Latest release</a></li>
<li role="menuitem"><a href="/java/3.0.0/index.html"><i class="icon-caret-right"></i> 3.0.0</a></li>
<li role="menuitem"><a href="/java/2.1/index.html"><i class="icon-caret-right"></i> 2.1</a></li>
<li role="menuitem"><a href="/java/2.0/index.html"><i class="icon-caret-right"></i> 2.0</a></li>
<li role="menuitem"><a href="/java/1.4/index.html"><i class="icon-caret-right"></i> &lt;=1.4.x</a></li>
<li class="divider"></li>
<li role="menuitem"><a href="/java/develop/index.html"><i class="icon-caret-right"></i> develop branch</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" role="button" data-toggle="dropdown" data-target="#" href="/community">
<i class="icon-group"></i> Community <b class="caret"></b>
</a>
<ul class="dropdown-menu" role="menu">
<li role="menuitem"><a href="/community/get_help.html"><i class="icon-caret-right"></i> Get Help</a></li>
<li class="divider"></li>
<li role="menuitem"><a href="/community/participate.html"><i class="icon-caret-right"></i> Participate</a></li>
<li role="menuitem"><a href="/community/playing_field.html"><i class="icon-caret-right"></i> Playing Field</a></li>
<li class="divider"></li>
<li role="menuitem"><a href="/community/codebase.html"><i class="icon-caret-right"></i> Codebase</a></li>
<li role="menuitem"><a href="https://builds.apache.org/view/S-Z/view/Polygene/" target="_blank"><i class="icon-caret-right"></i> Continuous Integration</a></li>
<li role="menuitem"><a href="https://issues.apache.org/jira/browse/POLYGENE" target="_blank"><i class="icon-caret-right"></i> Issues</a></li>
<li class="divider"></li>
<li role="menuitem"><a href="/community/maturity.html"><i class="icon-caret-right"></i> Maturity Model</a></li>
<li role="menuitem"><a href="/community/contributors.html"><i class="icon-caret-right"></i> People behind Apache Polygene™</a></li>
<li class="divider"></li>
<li role="menuitem"><a href="http://www.apache.org/licenses/" target="_blank"><i class="icon-caret-right"></i> Licensing</a></li>
<li role="menuitem"><a href="/community/licensing_faq.html"><i class="icon-caret-right"></i> Licensing FAQ</a></li>
<li class="divider"></li>
<li role="menuitem"><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank"><i class="icon-caret-right"></i> Sponsorship</a></li>
<li role="menuitem"><a href="http://www.apache.org/foundation/thanks.html" target="_blank"><i class="icon-caret-right"></i> Thanks</a></li>
<li role="menuitem"><a href="http://www.apache.org/security/" target="_blank"><i class="icon-caret-right"></i> Security</a></li>
</ul>
</li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div id="content" class="container-fluid">
<div class="row-fluid">
<div class="span2"></div>
<div class="span8">
April 28, 2013
<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>
</div>
<div class="span2"></div>
</div>
</div>
<div class="container-fluid">
<hr>
<footer>
<p>
Copyright &copy; 2015-2018 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/">Apache License, Version 2.0</a>.
<br/>
<small>
Apache Polygene, Polygene, Apache, the Apache feather logo, and the Apache Polygene project logo are trademarks of The Apache Software Foundation.<br/>
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</small>
</p>
</footer>
</div>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="/landing-resources/js/jquery-1.8.3.min.js"></script>
<script src="/landing-resources/js/bootstrap.min.js"></script>
<script src="/landing-resources/js/qi4j.org.js"></script>
</body>
</html>