Tuesday May 15, 2012

JSF 2.0 for the Cloud, Part Two

Part Two of Deepak Vohra’s “JSF 2.0 for the Cloud” is now up on otn/java. In Part One, Vohra demonstrated how to take advantage of resource handling, @ManagedBean annotation, and implicit navigation. In Part Two, he explores new features in JSF 2.0 that make it ready for the cloud, including Ajax support, view parameters, preemptive navigation, event handling, and bookmarkable URLs.

Ajax support for JSF 2.0 components includes asynchronous transfer of data between a client and a server, along with partial page rendering, partial page processing, and grouping of components, and can be added using either f:ajax tag or the JSF Ajax library (jsf.js).

Regarding view parameters, Vohra explains, “JSF 2.0 added support for view parameters, which add the provision to send request parameters in a GET request. A view parameter is a UI component represented with the UIViewParameter class. Just like other UI components, it is saved in the UI component tree for a Facelets page and can be associated with validators and converters. A view parameter is an EditableValueHolder because it implements the interface.”

Preemptive navigation allows developers to determine the resource file that they  navigate to and request parameters, if needed, based on the navigation case and view parameters, thus allowing them to create a URL for JSF resources that they access from a GET request. As a result, the URL displayed shows the resource and all request parameters.

Developers should take note that plans are in the works to update Java EE 7 for “cloud-related practical considerations, such as multitenancy and elasticity, also known as horizontal scaling.” This will be available through JSR 342, which is scheduled to complete an early draft review on May 23, 2012. Specification leads are Oracle’s Bill Shannon and Linda DeMichiel.
Access the article here.

Thursday Apr 12, 2012

JavaServer Faces 2.0 for the Cloud

A new article now up on otn/java by Deepak Vohra titled “JSF 2.0 for the Cloud, Part One,” shows how JavaServer Faces 2.0 provides features ideally suited for the virtualized computing resources of the cloud. The article focuses on @ManagedBean annotation, implicit navigation, and resource handling. Vohra illustrates how the container-based model found in Java EE 7, which allows portable applications to target single machines as well as large clusters, is well suited to the cloud architecture.

From the article--

“Cloud services might not have been a factor when JavaServer Faces 2.0 (JSF 2.0) was developed, but JSF 2.0 provides features ideally suited for the cloud, for example:
•    The path-based resource handling in JSF 2.0 makes handling virtualized resources much easier and provides scalability with composite components.
•    REST-style GET requests and bookmarkable URLs in JSF 2.0 support the cloud architecture. Representational State Transfer (REST) software architecture is based on transferring the representation of resources identified by URIs. A RESTful resource or service is made available as a URI path. Resources can be accessed in various formats, such as XML, HTML, plain text, PDF, JPEG, and JSON, among others. REST offers the advantages of being simple, lightweight, and fast.
•    Ajax support in JSF 2.0 is integrable with Software as a Service (SaaS) by providing interactive browser-based Web applications.”
In Part Two of the series, Vohra will examine features such as Ajax support, view parameters, preemptive navigation, event handling, and bookmarkable URLs.

Have a look at the article here.

Tuesday Mar 13, 2012

Key to the Java EE 6 Platform: NetBeans IDE 7.1

Oracle’s Geertjan Wielenga has a new article up on otn/java, titled “Key to the Java EE 6 Platform: NetBeans IDE 7.1,” in which he shows how the NetBeans IDE provides the tools, templates, and code generators to support Java EE 6 and its main specifications.

He initially observes that, “When you begin to grasp the breadth and ambition of the Java EE 6 Platform, which covers everything from the model (JPA and Bean Validation), to the controller (EJB and Servlets), to the view (JavaServer Faces), a simple entry point is difficult to find. Enter NetBeans IDE 7.1, which is Oracle’s IDE for the Java Platform, created by the same group of developers who created the Java EE 6 Platform. Here you find tools, templates, and code generators intended to be used in combination with the set of specifications that the Java EE 6 Platform encompasses.”

After offering a tour of the NetBeans IDE 7.1 tools that support Java EE 6, Wielenga ends on a cautionary note:

“While code generators and tools such as those described here are great to help you get your feet wet, a danger is that a lot of code is generated that you don't understand and that you therefore do not know how to debug and maintain. The good news is that far less code needs to be generated in Java EE 6 than before, making it far easier to understand and maintain.

Nevertheless, it is advisable to use tools of this kind intelligently. Start small, focusing on specific APIs. Get to know them via the generated code and then slowly extend the application as you become more familiar with the Java EE 6 Platform. Once you are comfortable with the spec, the tools aim to help you become more productive: combining the leanness of the Java EE 6 Platform with the tools in the IDE, you'll be rapidly creating the core of your application.”

Check out the article.


Wednesday Mar 07, 2012

Java Champion Jonas Bonér Explains the Akka Framework

In a new interview on otn/java, titled “Java Champion Jonas Bonér Explains the Akka Framework,” Jonas Bonér explores the intricacies of Akka, an open source platform for next-generation event-driven, scalable, fault-tolerant architectures on the JVM. He argues that the way concurrency is typically performed in Java with shared-state consistency is needlessly difficult, resulting in concurrent access to shared mutable state guarded by locks, which are notoriously hard to understand and get right. Locks, from Bonér’s perspective, do not compose, scale poorly, have complicated error recovery and are, generally, too low level.

From the article itself:

“Akka offers multiple solutions to the concurrency problem. It provides a toolkit for addressing concurrency, scalability, and high-availability concerns. It provides one thing to learn and one thing to use. Akka has multiple tools that will help you as a developer. Actors, futures, agents, and software transactional memory all raise the abstraction level and make it easer to write, understand, and maintain concurrent, scalable, fault-tolerant code. Instead of messing around with very low-level constructs, you think in terms of higher-level concepts such as message flows and transactions. What is usually solved by use of low-level plumbing in standard enterprise applications becomes workflow in Akka. So you start to think about how the data flows in the systems rather than how to get the concurrency and scalability exactly right.”

Read the complete article here.

Thursday Jan 19, 2012

A File I/O Tutorial Featuring NIO.2

A tutorial on the front page of otn/java titled “A File I/O Tutorial Featuring NIO.2” explains the new file I/O mechanism introduced in the Java 7 release. The java.nio.file package and its related package, java.nio.file.attribute, provide comprehensive support for file I/O and for accessing the default file system. Though the API has many classes, developers need only focus on a few key entry points. The tutorial makes it clear that the API is intuitive and easy to use.

The tutorial begins by asking, “What is a path?” and then introduces the Path class, which is the primary entry point for the package. It explains Methods in the Path class related to syntactic operations and moves on to the other primary class in the package, the Files class, which contains methods related to file operations. It then introduces some concepts common to many file operations and explains methods for checking, deleting, copying, and moving files.

The tutorial offers a concise summary of the API with suggestions for further learning.

“The java.nio.file package provides extensive support for file and file system I/O. This is a very comprehensive API, but the key entry points are as follows:
•    The Path class has methods for manipulating a path.
•    The Files class has methods for file operations, such as moving, copy, deleting, and also methods for retrieving and  setting file attributes.
•    The FileSystem class has a variety of methods for obtaining information about the file system.”

More information on NIO.2 can be found on the OpenJDK: NIO project website on java.net. This site includes resources for features provided by NIO.2 that are beyond the scope of this tutorial, such as multicasting, asynchronous I/O, and creating your own file system implementation.


Read the complete article here.

Monday Oct 17, 2011

And The Winners Are.......The Duke's Choice Award

On Sunday evening, Oct. 2, at the JavaOne Open House, Oracle welcomed and celebrated the 2011 Duke's Choice Award winners, all talented developers who have demonstrated extreme innovation in the creation of Java-powered applications.

Drum roll: And the winners are...

Arquillian Project - Arquillian is a platform for simplifying Java integration testing.  We transparently handle the pesky scaffolding like server startup, framework initialization and deployment - leaving you to focus on the task at hand: writing your test logic.

• dooApp - Infiltrea is an end-to-end solution, built with JavaFX and Java Platform, Standard Edition (Java SE), designed for green building professionals whose job is to measure the air tightness of buildings.

Inductive Automation - Ignition is a Java-based web application that includes a business scorecard to integrate different manufacturing machines using a central web-server. It creates systems that cover the full spectrum between Human Machine Interface (HMI), Supervisory Control and Data Acquisition (SCADA) and Manufacturing Execution System (MES), enabling rapid project development and deployment.

• Java Platform, Enterprise Edition (Java EE) jHome - A complete home automation API open-source for Glassfish/Java EE, enabling developers to control anything in their homes such as lamps, LED lights, and coffee machines.

• JFrog - JFrog's Artifactory is the world's first binary repository manager. Built with the Content Repository API for Java (JCR) specification, it is helping to change the way developers build and manage software modules by delivering high concurrency and unmatched data integrity.

JRebel - JRebel is a Java Virtual Machine (JVM) plug-in that enables Java developers to instantly see any code change made to an application. It allows developers to skip the build and redeploy phases and has prevented 39 million redeploys.

• LMAX - The LMAX Disruptor is a multi-threaded, open-source concurrent programming framework designed for high-performance and low-latency transaction processing. Part of LMAX's Java-based trading platform, the LMAX Disruptor replaces and outperforms java.util.concurrent.ArrayBlockingQueue by up to 80 times.

Rockwell Automation - Rockwell Automation is creating its next generation, Java-enabled HMI device line of products that will allow for the automated communication and exchange of data to factory floor lines.

Sodbeans Project - The Sodbeans Project is an open-source, NetBeans-based module suite designed to enhance accessibility for the blind in modern programming environments. The NetBeans module suite includes a new programming language designed for ease-of-use, a text-to-speech engine designed to make NetBeans compatible with screen readers on multiple platforms and a number of features designed to make programming easier for the blind.

The Netty Project - The Netty Project is a Java-based new I/O (NIO) client server framework that enables quick and easy development of network applications. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.

Congratulations to all!

Interfacing with the Interface: JavaFX 2.0, Wiimote, Kinect, and More

Oracle’s Java Technology Evangelist Simon Ritter, one of the most fun-loving Java developers I know, with a long history of JavaOne gadgetry, gave a session (25011) at JavaOne 2011 on Wednesday afternoon showing how “open source APIs for the Kinect, the Wiimote combined with a tilt-compensated compass, a head-mounted stereoscopic display, and some old Sun SPOTs can build a truly immersive application.” The large audience appeared immersed throughout the session in Ritter's colorful and clearly delineated demos.

Simon RitterHe explained that the way we interact with computers is rapidly changing and that the days of the keyboard and mouse are gone. (Maybe so, but I'm sitting here using a keyboard and mouse.) And with his usual dramatic flair, Ritter invited attendees to behold the rise of something he calls the “gestural interface”.

The presentation used the latest JavaFX 2.0 "pure Java" implementation and began with an overview of the different components being used and explained how they are all brought together to enable the user to interact with interfaces in ways never before possible. Building an interface with the new JavaFX 2.0, Simon pointed out, is a continuation of the JavaFX product line, which is now a Java API with no scripting language and most APIs ported across while features such as binding and animation have required more thought. JavaFX now embraces more web technologies and enables the use of CSS for all JavaFX controls and a web specification for Drag-and-Drop. Also, developers use Scenegraph instead of DOM. He pointed to both pro’s and con’s of using JavaFX with gestural interfaces. On the plus side, it has built-in features such as data binding and animations, is a relatively simple API, and is able to build rich, visually appealing interfaces. On the negative side, JavaFX is currently limited to a 2D environment. The engineering team is currently working on 3D support.

He contrasted this with jMonkey Engine (jME), a game engine made especially for modern 3D development, written purely in Java and consisting of a collection of libraries that has game engine facilities and a full physics engine, but is hard to program and focuses on games and not generic interfaces. Ritter proceeded to demonstrate how to use the Nintendo Wiimote with a Java interface. The Wiimote communicates using a Bluetooth stack that needs to support L2CAP, has JSR-82 Java Bluetooth API implementation plus Wiimote-specific Java APIs (IR sensors, accelerometer, etc), most of which is free and open source.

He then presented a demo making use of the Sun Spot controller, a gyro sensor for precise rotation data, three bend sensors for finger movement for head tracking and data gloves, hand and head tracking sensors and hardware and more.

This followed with a demo using the Kinect Sensor with Java for 3D sensing. Not to be lost are his larger points: Java is still a really cool and powerful language. It is easy to interface with exotic hardware using free and open source libraries to build interesting applications using modern hardware.

After a brief Q&A, Simon -- as he always does -- implored attendees to be inspired and go build their own FUN stuff.

Evolutionary Next-Steps - Technical Keynote JavaOne 2011

Monday morning's Technical Keynote began with Doug Fisher, Corporate Vice President and General Manager of the Software and Services Group’s System Software Division, Intel. Fisher and a number of Intel colleagues reviewed Intel’s long association with Java, and their collaborative work with Oracle to optimize the Java platform (for both the JVM and Fusion Middleware) on Intel hardware.


From there, Ashok Joshi, Senior Director of Development NoSQL Database, briefly discussed performance tuning with Intel of the newly announced Oracle NoSQL Database product.

From Evolution to Revolution: Java 7 to Java 8

Following Joshi, Mark Reinhold, Chief Architect of the Java Platform Group at Oracle, reviewed the history of Java 7, and its “Plan B” paradigm of including Project Coin (JSR 334), InvokeDynamic (JSR 292), and the Fork/Join Framework in the just-released Java 7, while incorporating Project Jigsaw and Project Lambda in the upcoming Java 8. Reinhold then explored the evolutionary benefits of these key new features of the Java 7 release -- offering both greater ease of development, and significant performance benefits. “Not only are these features available in Java 7 today,” noted Reinhold, “but as of last week, they are now supported in all three of the major Java IDEs.”

Reinhold next detailed plans for the upcoming Java 8 release, which promises more revolutionary features beyond the evolutionary offerings of Java 7. Project Lambda (JSR 335) will bring closures to the Java programming language. And Project Jigsaw (JSR TBD) aims to define a standard module system -- not just for application code, but for the platform itself.

JavaFX 2.0 is Here!

Richard Bair, Chief Architect, Client Java Platform, Oracle, then dove into the official debut of JavaFX 2.0, along with some stunning demos of the new facility, presented by several colleagues. Java FX 2.0 is Oracle’s premier development environment for rich client applications. Bair emphasized that JavaFX 2.0 was designed to offer:

Cross Platform
Leverage Java
Advanced Tooling
Developer Productivity
Amazing User Interfaces.

“We naturally want user interfaces that look good and work well,” said Bair. “It used to be just eye candy, but now it’s becoming a required feature for the things we write. We’re announcing today the general availability of JavaFX 2.0, at JavaFX.com. We think this is going to be a really big deal in the industry.”

An important aspect of any UI technology is a good visual development tool, and Bair next announced early access for the JavaFX Scene Builder, which will first be made available to select partners, then expanded to a general beta, and then a full release. But for those at JavaOne, an early build of the tool will be running and available for demo at the DEMOgrounds.

A series of stunning demos -- several of them BSD licensed caused much enthusiasm -- then took JavaFX 2.0 out for a spin, and clearly showed the possibilities and potentials of the new release -- including animated 3D audio EQ mapping, and a navigable 3D virtual room that featured live video of Oracle colleague Jasper Potts displayed on a wall monitor, along with real-time mimicking of Potts’ movements by a virtual Java Duke figure.

Bair noted that there are over 50 JavaFX sessions at JavaOne, and said that for anyone who attended all of them -- “I’ll buy you dinner!”

Moving Java EE into the Cloud

From there, Linda DeMichiel, Java EE 7 Specification Lead, explored the upcoming Java EE 7 release. “What’s new with the Java EE platform?” asked DeMichiel. “We’re moving Java EE into the Cloud. Our focus on this release is providing support for Platform as a Service. We want to provide a way for customers and users of the platform to leverage public, private and hybrid clouds. With Java EE 7, our focus is on the platform itself as a service, which can be leveraged in cloud environments.”

DeMichiel’s colleague, Arun Gupta, then demonstrated deployment of a Java EE application as a PaaS, using Glassfish 4.0. Both the application and instructions on how to replicate the demo are available online.

More Java Cards than People?

Lastly, Hinkmond Wong, of Oracle’s Java Embedded group, covered the latest in mobile and embedded Java, noting the three billion Java enabled phones and five billion Java Cards in the world today. “There are about 6.5 billion people in the world,” noted Wong, “and five billion Java Cards.”

2011 saw the introduction of Near Field Communication (NFC) payment system, including e-Passport in Java ME, allowing for mobile-to-mobile and machine-to-machine transactions with embedded security. Wong detailed the many new Java ME releases for 2011, along with several mobile and embedded technology demos—from cell phones to Blu-ray players.

The overflow crowd left the opening technical keynote energized – a real good start to this JavaOne!

Learn More:

Java 7 Features

Java SE 7 Features and Enhancements

A Look at Java 7's New Features

Contribute to JDK 8

JavaFX Homepage

JavaFX Overview

Java EE at a Glance

Java for Mobile Devices

Oracle NoSQL Database

Oracle Technology Network for Java Developers

Tuesday Oct 04, 2011

And The Winners Are.......The Duke's Choice Award

On Sunday evening, Oct. 2, at the JavaOne Open House, Oracle welcomed and celebrated the 2011 Duke's Choice Award winners, all talented developers who have demonstrated extreme innovation in the creation of Java-powered applications.

Drum roll: And the winners are...

Arquillian Project - The Arquillian project simplifies integration testing for Java-based applications. It provides an easy mechanism for developers to test application code inside a remote or embedded container, or by interacting as a client of the container.

• dooApp - Infiltrea is an end-to-end solution, built with JavaFX and Java Platform, Standard Edition (Java SE), designed for green building professionals whose job is to measure the air tightness of buildings.

Inductive Automation - Ignition is a Java-based web application that includes a business scorecard to integrate different manufacturing machines using a central web-server. It creates systems that cover the full spectrum between Human Machine Interface (HMI), Supervisory Control and Data Acquisition (SCADA) and Manufacturing Execution System (MES), enabling rapid project development and deployment.

• Java Platform, Enterprise Edition (Java EE) jHome - A complete home automation API open-source for Glassfish/Java EE, enabling developers to control anything in their homes such as lamps, LED lights, and coffee machines.

• JFrog - JFrog's Artifactory is the world's first binary repository manager. Built with the Content Repository API for Java (JCR) specification, it is helping to change the way developers build and manage software modules by delivering high concurrency and unmatched data integrity.

JRebel - JRebel is a Java Virtual Machine (JVM) plug-in that enables Java developers to instantly see any code change made to an application. It allows developers to skip the build and redeploy phases and has prevented 39 million redeploys.

• LMAX - The LMAX Disruptor is a multi-threaded, open-source concurrent programming framework designed for high-performance and low-latency transaction processing. Part of LMAX's Java-based trading platform, the LMAX Disruptor replaces and outperforms java.util.concurrent.ArrayBlockingQueue by up to 80 times.

Rockwell Automation - Rockwell Automation is creating its next generation, Java-enabled HMI device line of products that will allow for the automated communication and exchange of data to factory floor lines.

Sodbeans Project - The Sodbeans Project is an open-source, NetBeans-based module suite designed to enhance accessibility for the blind in modern programming environments. The NetBeans module suite includes a new programming language designed for ease-of-use, a text-to-speech engine designed to make NetBeans compatible with screen readers on multiple platforms and a number of features designed to make programming easier for the blind.

The Netty Project - The Netty Project is a Java-based new I/O (NIO) client server framework that enables quick and easy development of network applications. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.

Congratulations to all!

Monday Oct 03, 2011

Evolutionary Next-Steps - Technical Keynote JavaOne 2011

Monday morning's Technical Keynote began with Doug Fisher, Corporate Vice President and General Manager of the Software and Services Group’s System Software Division, Intel. Fisher and a number of Intel colleagues reviewed Intel’s long association with Java, and their collaborative work with Oracle to optimize the Java platform (for both the JVM and Fusion Middleware) on Intel hardware.

From there, Ashok Joshi, Senior Director of Development NoSQL Database, briefly discussed performance tuning with Intel of the newly announced Oracle NoSQL Database product.

From Evolution to Revolution: Java 7 to Java 8

Following Joshi, Mark Reinhold, Chief Architect of the Java Platform Group at Oracle, reviewed the history of Java 7, and its “Plan B” paradigm of including Project Coin (JSR 334), InvokeDynamic (JSR 292), and the Fork/Join Framework in the just-released Java 7, while incorporating Project Jigsaw and Project Lambda in the upcoming Java 8. Reinhold then explored the evolutionary benefits of these key new features of the Java 7 release -- offering both greater ease of development, and significant performance benefits. “Not only are these features available in Java 7 today,” noted Reinhold, “but as of last week, they are now supported in all three of the major Java IDEs.”

Reinhold next detailed plans for the upcoming Java 8 release, which promises more revolutionary features beyond the evolutionary offerings of Java 7. Project Lambda (JSR 335) will bring closures to the Java programming language. And Project Jigsaw (JSR TBD) aims to define a standard module system -- not just for application code, but for the platform itself.

JavaFX 2.0 is Here!

Richard Bair, Chief Architect, Client Java Platform, Oracle, then dove into the official debut of JavaFX 2.0, along with some stunning demos of the new facility, presented by several colleagues. Java FX 2.0 is Oracle’s premier development environment for rich client applications. Bair emphasized that JavaFX 2.0 was designed to offer:

Cross Platform
Leverage Java
Advanced Tooling
Developer Productivity
Amazing User Interfaces.

“We naturally want user interfaces that look good and work well,” said Bair. “It used to be just eye candy, but now it’s becoming a required feature for the things we write. We’re announcing today the general availability of JavaFX 2.0, at JavaFX.com. We think this is going to be a really big deal in the industry.”

An important aspect of any UI technology is a good visual development tool, and Bair next announced early access for the JavaFX Scene Builder, which will first be made available to select partners, then expanded to a general beta, and then a full release. But for those at JavaOne, an early build of the tool will be running and available for demo at the DEMOgrounds.

A series of stunning demos -- several of them BSD licensed caused much enthusiasm -- then took JavaFX 2.0 out for a spin, and clearly showed the possibilities and potentials of the new release -- including animated 3D audio EQ mapping, and a navigable 3D virtual room that featured live video of Oracle colleague Jasper Potts displayed on a wall monitor, along with real-time mimicking of Potts’ movements by a virtual Java Duke figure.

Bair noted that there are over 50 JavaFX sessions at JavaOne, and said that for anyone who attended all of them -- “I’ll buy you dinner!”

Moving Java EE into the Cloud

From there, Linda DeMichiel, Java EE 7 Specification Lead, explored the upcoming Java EE 7 release. “What’s new with the Java EE platform?” asked DeMichiel. “We’re moving Java EE into the Cloud. Our focus on this release is providing support for Platform as a Service. We want to provide a way for customers and users of the platform to leverage public, private and hybrid clouds. With Java EE 7, our focus is on the platform itself as a service, which can be leveraged in cloud environments.”

DeMichiel’s colleague, Arun Gupta, then demonstrated deployment of a Java EE application as a PaaS, using Glassfish 4.0. Both the application and instructions on how to replicate the demo are available online.

More Java Cards than People?

Lastly, Hinkmond Wong, of Oracle’s Java Embedded group, covered the latest in mobile and embedded Java, noting the three billion Java enabled phones and five billion Java Cards in the world today. “There are about 6.5 billion people in the world,” noted Wong, “and five billion Java Cards.”

2011 saw the introduction of Near Field Communication (NFC) payment system, including e-Passport in Java ME, allowing for mobile-to-mobile and machine-to-machine transactions with embedded security. Wong detailed the many new Java ME releases for 2011, along with several mobile and embedded technology demos—from cell phones to Blu-ray players.

The overflow crowd left the opening technical keynote energized – a real good start to this JavaOne!

Learn More:

Java 7 Features:
http://openjdk.java.net/projects/jdk7/features/

Java SE 7 Features and Enhancements:
http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html

A Look at Java 7's New Features:
http://radar.oreilly.com/2011/09/java7-features.html

Contribute to JDK 8:
http://openjdk.java.net/projects/jdk8/
http://jdk8.java.net/

JavaFX:
http://javafx.com/
http://www.oracle.com/technetwork/java/javafx/overview/index.html

Java EE at a Glance:
http://www.oracle.com/technetwork/java/javaee/overview/index.html

Java for Mobile Devices:
http://www.oracle.com/technetwork/java/javame/javamobile/overview/getstarted/index.html

Oracle NoSQL Database:
http://www.oracle.com/technetwork/database/nosqldb/overview/index.html
About

Insider News from the Java Team at Oracle!

duke
javeone logo
Links


Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
2
5
6
7
12
13
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today