JAVA / JDK Version History

Java Version History

JDK 1.0 (january 23, 1996) oak
– Initial release

JDK 1.1 (february 19, 1997)
– Retooling of the AWT event model
– Inner classes added to the language
– JavaBeans
– JDBC
– RMI

J2SE 1.2 (December 8, 1998) playground
This and subsequent releases through J2SE 5.0 were rebranded retrospectively Java 2 & version name “J2SE”
(Java 2 platform, Standard edition) replaced JDK to distinguish the base platform from
J2EE (java 2 platform, enterprise edition) and J2ME (java 2 platform, micro edition).

– Strictfp keyword
– Reflection
– Swing api integration into the core classes
– JVM equipped with a jit compiler
– Java plug-in
– Java IDL
– An IDL implementation for corba interoperability
– Collections Framework

J2SE 1.3 (may 8, 2000) kestrel
– Hotspot jvm included
– JavaSound
– JNDI included in core libraries
– Java platform debugger architecture (jpda)
– RMI was modified to support optional compatibility with corba

J2SE 1.4 (february 6, 2002) merlin
– assert keyword
– Regular expressions
– Exception chaining (allows an exception to encapsulate original lower-level exception)
– Internet protocol version 6 (IPV6) support
– Non-blocking nio (new input/output)
– Logging API
– Image i/o api for reading and writing images in formats like jpeg and png
– Integrated XML parser and XSLT processor (JAXP)
– Integrated security and cryptography extensions (JCE, JSSE, JAAS)
– Java web start

J2SE 5.0 (september 30, 2004) tiger [originally numbered 1.5]
– Generics: provides compile-time (static) type safety for collections and eliminates the need for most typecasts (type conversion).
– Metadata: also called annotations; allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities.
– Autoboxing/unboxing: automatic conversions between primitive types (such as int) and primitive wrapper classes (such as integer).
– Enumerations: the enum keyword creates a typesafe, ordered list of values (such as day.monday, day.tuesday, etc.). Previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern).
– Swing: new skinnable look and feel, called synth.
– Var args: the last parameter of a method can now be declared using a type name followed by three dots (e.g. Void drawtext(string… Lines)). In the calling code any number of parameters of that type can be used and they are then placed in an array to be passed to the method, or alternatively the calling code can pass an array of that type.
– Enhanced for each loop: the for loop syntax is extended with special syntax for iterating over each member of either an array or any iterable, such as the standard collection classesfix the previously broken semantics of the java memory model, which defines how threads interact through memory.
– Automatic stub generation for rmi objects.
– Static imports concurrency utilities in package java.util.concurrent.
– Scanner class for parsing data from various input streams and buffers.
– Assertions
– StringBuilder class (in java.lang package)
– Annotations

Java SE 6 (december 11, 2006) mustang
sun replaced the name “J2SE” with java se and dropped the “.0” from the version number.
Beta versions were released in february and june 2006, leading up to a final release that occurred on december 11, 2006.
The current revision is update 14 which was released in may 2009.

– Support for older win9x versions dropped.
– Scripting lang support: Generic API for integration with scripting languages, & built-in mozilla javascript rhino integration
– Dramatic performance improvements for the core platform, and swing.
– Improved web service support through JAX-WS JDBC 4.0 support
– Java compiler API: an API allowing a java program to select and invoke a java compiler programmatically.
– Upgrade of JAXB to version 2.0: including integration of a stax parser.
– Support for pluggable annotations
– Many GUI improvements, such as integration of swingworker in the API, table sorting and filtering, and true swing double-buffering (eliminating the gray-area effect).

Java se 6 update 10
A major enhancement in terms of end-user usability.
– Java Deployment Toolkit, a set of javascript functions to ease the deployment of applets and java web start applications.
– Java Kernel, a small installer including only the most commonly used jre classes. Enhanced updater.
– Enhanced versioning and pack200 support: server-side support is no longer required.
– Java quick starter, to improve cold start-up time.
– Improved performance of java2D graphics primitives on windows, using direct3D and hardware acceleration.
– A new Swing look and feel called NIMBUS and based on synth.
– Next-generation java plug-in: applets now run in a separate process and support many features of web start applications.

Java se 6 update 12
This release includes the highly anticipated 64-bit java plug-in (for 64-bit browsers only), windows server 2008 support,
and performance improvements of java and JAVAFX applications.

 

Java SE 7

  • Swing
  • IO and New IO
  • Networking
  • Security
  • Concurrency Utilities
  • Rich Internet Applications (RIA)/Deployment
    • Requesting and Customizing Applet Decoration in Dragg able Applets
    • Embedding JNLP File in Applet Tag
    • Deploying without Codebase
    • Handling Applet Initialization Status with Event Handlers
  • Java 2D
  • Java XML – JAXP, JAXB, and JAX-WS
  • Internationalization
  • java.lang Package
    • Multithreaded Custom Class Loaders in Java SE 7
  • Java Programming Language
    • Binary Literals
    • Strings in switch Statements
    • The try-with-resources Statement
    • Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking
    • Underscores in Numeric Literals
    • Type Inference for Generic Instance Creation
    • Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods
  • Java Virtual Machine (JVM)
    • Java Virtual Machine Support for Non-Java Languages
    • Garbage-First Collector
    • Java HotSpot Virtual Machine Performance Enhancements
  • JDBC

 

 

Hippo CMS – a Java Open Source Web Content Management Solutions

Hippo CMS is an open-source information centered Content Management System. The Hippo CMS project was initiated and is maintained by Hippo. It’s targeted at medium to large organisations managing content for multi-channel distribution like web sites and intranets. It facilitates an open and flexible way of using your information by following international accepted open standards.

Hippo is a Java Open Source Web Content Management system that enables a true, open and context-aware content strategy.

Hippo CMS is a Java Open Source Web content management (WCM) solution that drives high performance Web properties. Hippo’s focus is to enable organizations to empower audiences to consume content on their terms.

Open Source and Open Standards

Hippo CMS is user friendly, has an open architecture and is designed for interoperability with existing environments. Hippo CMS is built to integrate external sources of content into one. Therefore, it uses all relevant open standards to allow this integration. For many existing sources, connectors are available in the codebase.

The open architecture of Hippo CMS has the following key points:

  • Faceted repository
  • Open source
  • Content repository API for Java, JSR-170
  • Works with open standards
  • Reuse of content
  • Separation of content, design, logic and the CMS itself.
  • User friendly user interface
  • Native XML, 100% Java
  • No vendor lock-in

Hope you will enjoy this. Cheers… 😉

KonaKart – a java eCommerce system

KonaKart is a java eCommerce system aimed at medium to large online retailers. The KonaKart product is owned by DS Data Systems UK Ltd with staff in Italy and the UK.

KonaKart provides an extensive set of features to enable retailers to successfully sell their products over the internet. It is a Java / JSP / XML based solution with easy to use java APIs and a SOAP Web Service interface that allow retailers to quickly integrate eCommerce functionality into existing systems. The customizable parts of KonaKart are Open Source and available under the GNU LGPL.

KonaKart includes both a Storefront application and an AJAX-enabled Administration Application. The Administration Application includes role-based security which allows companies to define the administrative functions that should be allowed for different user groups.

Features :

  • Comprehensive eCommerce / shopping cart functionality
  • Ease of integration through its complete set of java, SOAP, JSON and RMI APIs
  • Ease of creation of unique storefronts by using the jQuery / javascript libraries
  • Ease of customization – with examples, tutorials and source code available
  • High performance, scalability and reliability
  • Ability to run as a JSR-168 portlet – eg in Liferay
  • Wide choice of supported databases (MySQL, Oracle, PostgreSQL, DB2, MS SQL Server)

The Community Edition of is free and can be downloaded from the KonaKart website.

Hope you will enjoy this. Cheers.. 😉

Parsing/Reading RSS/Atom Feed Using ROME

ROME library contains utility classes for parsing and publishing syndicated feeds, it is an open source Java library that make it easy to work with RSS/Atom feeds.

Rome library have converters to convert from one format to another. Rome can parse any format of Newsfeed, including RSS variants and Atom.

It will support most of the syndication formats includes following

  1. RSS 0.90
  2. RSS 0.91 Netscape
  3. RSS 0.91 Userland
  4. RSS 0.92
  5. RSS 0.93
  6. RSS 0.94
  7. RSS 1.0
  8. RSS 2.0
  9. Atom 0.3
  10. Atom 1.0

Note : Download ROME and JDOM

Parsing/Reading RSS/Atom Example


import java.net.URL;
import java.util.Iterator;

import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;

public class Reader {

public static void main(String[] args) throws Exception {

URL url  = new URL("https://javamagic.wordpress.com/feed/");
XmlReader reader = null;

try {

reader = new XmlReader(url);
SyndFeed feed = new SyndFeedInput().build(reader);
System.out.println("Feed Title: "+ feed.getAuthor());

for (Iterator i = feed.getEntries().iterator(); i.hasNext();) {
SyndEntry entry = (SyndEntry) i.next();
System.out.println(entry.getTitle());
}
} finally {
if (reader != null)
reader.close();
}
}
}

Hope you will like this. Cheers.. 🙂

Create Sitemap Using Java

Sitemaps are an easy way for webmasters to inform search engines about pages on their sites that are available for crawling.

Sitemap is an XML file that lists URLs for a site along with additional metadata about each URL (when it was last updated, how often it usually changes, and how important it is, relative to other URLs in the site) so that search engines can more intelligently crawl the site.

Web crawlers usually discover pages from links within the site and from other sites. Using the Sitemap protocol does not guarantee that web pages are included in search engines, but provides hints for web crawlers to do a better job of crawling your site. Sitemap 0.90 has wide adoption, including support from Google, Yahoo!, and Microsoft.

It will also support for google site map updations.

Note : sitemapgen4j-1.0.1.jar – Set in classpath

SitemapGen4j Features

SitemapGen4j is a library to generate XML sitemaps in Java.

  • Adding any number of URLs
  • Can set gzipped output
  • Can set lastmod option
  • Can set priority option
  • Can set changefreq option
  • Configuring the date format
  • Configuring sitemap index file
  • Validate your sitemaps against official XML Schema Definition (XSD)

Create Sitemap Using SitemapGen4j


import java.io.File;
import java.net.MalformedURLException;
import java.util.Date;

import com.redfin.sitemapgenerator.ChangeFreq;
import com.redfin.sitemapgenerator.WebSitemapGenerator;
import com.redfin.sitemapgenerator.WebSitemapUrl;

public class SitemapGenerator {

public static void main(String[] args) throws MalformedURLException {
// If you need gzipped output
WebSitemapGenerator wsg = WebSitemapGenerator.builder("http://www.javamagic.wordpress.com", new File("C:\\sitemap"))
.gzip(true).build();

WebSitemapUrl url = new WebSitemapUrl.Options("https://javamagic.wordpress.com/2012/02/24/create-pdf-with-itext-java-tutorial/")
.lastMod(new Date()).priority(1.0).changeFreq(ChangeFreq.HOURLY).build();
// this will configure the URL with lastmod=now, priority=1.0, changefreq=hourly

//You can add any number of urls here
wsg.addUrl(url);
wsg.addUrl("https://javamagic.wordpress.com/2011/12/16/prototype-pattern/");
wsg.write();
}
}

Hope you will like this. Cheers… 🙂

What is OpenERP? Open Source ERP Software Explained.

OpenERP (previously known as TinyERP) is an open source integrated enterprise resource planning (ERP) software manufactured by OpenERP.

Belgium-based OpenERP provides an open source suite of ERP business applications. It follows a typical commercial open source business model where the fully-featured applications are available free through a community-supported version; however no warranties or support for the software is available from the company.

If you choose the Enterprise or Online versions your business can obtain support for the software in addition to migration and maintenance, on a per-user, per-month subscription basis.

While not necessarily encouraged, OpenERP does include a provision in the OpenERP Enterprise license that allows customers to make private OpenERP modules when they need to.

OpenERP is, according to the author, an open source alternative to SAP ERP and Microsoft Dynamics.

What can I do with OpenERP?

OpenERP is a full suite of business software, including the following modules:

Accounting: Record your operations in a few clicks and manage all your financial activities in one place.

Application Builder:  The OpenERP application builder lets you customize every module of OpenERP directly from the web interface without any development required.

CRM: Track leads and opportunities customized your sales cycle, controls statistics and forecasts and marketing campaign automation to improve your sales performance.

Human Resources:  The module is for personnel information management, leave, time tracking, attendance‚ expenses, payroll, periodic evaluations and recruitment.

Invoicing: Create and supervise your entire supplier and customer invoices.

Manufacturing: Plan and control your supply chain through different applications in the Manufacturing module.

Marketing: Marketing campaigns can help you automate email and email sending, qualify leads and encourage customers to contact the right department.

Point of Sale: The OpenERP touchscreen point of sale allows you to manage your shop sales. It’s fully web-based so you don’t need to install or deploy any software.

Project Management: Keep track and manage your projects using tasks for short term project execution or plan phases for long term planning.

Purchase: Create and track your purchase orders, manage your suppliers’ info, control your products reception process and check suppliers’ invoices.

Warehouse Management: An inventory management system to easily manage complex needs: tracking stocks of suppliers/customers, full traceability, accounting links, and more. OpenERP supports multi-warehouse management based on hierarchical locational structure.

Because OpenERP is open source and backed by a large community, you can take advantage of more than 700 OpenERP modules on the OpenERP Apps website. These applications extend functionality of the ERP software and provide more business apps for things like manufacturing, localization, project management and more.

The other benefit to users is that you do not need to use all the business apps. You can choose only the modules that you need for your business from the suite (e.g. just CRM or CRM and invoicing). This keeps your OpenERP tidy and less overwhelming if you do not need all the business apps. You can add additional modules (at no cost) as you need them.

Architecture

Client-server Architecture : OpenERP has separate client and server components. The server runs separately from the client. It handles the business logic and communicates with the database application. The client presents information to users and allow them to inter-operate with the server. Multiple client applications are available.

Server and Modules : The server part is written in Python programming language. The client communicates with the server using XML-RPC interfaces.

Business functionality is organised into modules. A module is a folder with a pre-defined structure containing Python code and XML files. A module defines data structure, forms, reports, menus, procedures, workflows, etc… Modules are defined using a client-independent syntax. So, adding new objects, such as menus or forms, makes it available to any client.

Client applications : The clients are thin clients as they contain no business logic. Two client applications are officially supported:

  • A web application, which is deployed as an HTTP server to allow users to connect using their Web browser.
  • A desktop application, written in Python and using the GTK+ toolkit.

Other alternative clients have also been developed by the community

Database : OpenERP uses PostgreSQL as database management system.

Reporting : OpenERP also provides a reporting system with OpenOffice.org integration allowing customization of reports.

Source code and contributions : The source code of OpenERP is hosted on Launchpad, using the Bazaar revision control system, and the contributions are also handled using Launchpad. The documentations are also managed using this service but a website dedicated to all publications has been set up in 2009

OpenERP Versions:  Free, Supported, Hosted or On-Premise Business Apps

OpenERP is made available through three different versions. The OpenERP software is free, but enterprise and hosted versions are fee-based.  OpenERP Enterprise and OpenERP Community are exactly the same product, only the user pays for the additional services being offered by the OpenERP Team, not for the software.

OpenERP Community: (AGPL license) Open source OpenERP software (with all features) with no warranties. With this version you rely on community-based support only and migrations, bug fixes and private ERP modules are not allowed.  Price: Free

OpenERP Enterprise: (AGPL or AGPL plus Private Use) Open source OpenERP as production-ready management software. The Enterprise version is fully supported by the OpenERP Team and includes unlimited migrations, bug fixes, private modules and security alerts. OpenERP Enterprise version is on-premises software that you host yourself (Linux or Windows operating systems). Price: €165 per month for 1 to 10 users, up to €15,500 for 70 to 150 users.

OpenERP Online: Similar to the services offered in the enterprise version with the exception of no private modules or community modules, and it is hosted and maintained by OpenERP. Price: €39 per user per month. Free 30-day trial available.

Hope you will like this.  Cheers… 🙂

Spket: Setting up Eclipse IDE for Ext JS and JQuery development

Spket – Development tool for RIA

Eclipse is great, and I what I like the most about it is the autocomplete feature. Unfortunately, it is available only for Java (or any other supported programming language), and if you work with web development, you probably also work with javaScript. And I miss the autocomplete feature for js files.

But there is a solution for this case. You can use Spket Eclipse plugin. I’ve been using it for a couple of months and it is very good. It is saving me some time when I am coding.

So I decided to write this tutorial. I hope it will be useful to you!

Spket IDE is powerful toolkit for JavaScript and XML development.

The powerful editor for JavaScript, XUL/XBL and Yahoo! Widget development. The JavaScript editor provides features like code completion, syntax highlighting and content outline that helps developers productively create efficient JavaScript code.

Tutorial: Spket: Setting Up Eclipse IDE for Ext JS and JQuery Development

Hope you will like this. Cheers… 🙂