Really good talk by Venkat Subramaniam on Progamming language Renaissance.
Some of the key points
* We are in the middle of programming language renaissance
* Nice analogy between history and Progamming Languages
Venkat's Techno Blog
I am a Software Developer. I work for Thomson Reuters in Bangalore.
Thursday, April 21, 2011
Wednesday, April 20, 2011
Day 1 Last session : Javascript powerful language out there
Last session of the day by Venkat on the power of Javascript
Javascript
Feels like Java & C
Similar to perl in some ways
Untyped Language
Rules
1) Case sensitive
2) goo idea to use ;
3) commenting style is same as Java/C++
4) null and undefined are used to indicated null
5) Strings are single or doule quotes and are immutable
Functional in nature : Functions are first class citizens
Pass and return functions. Everything should be object oriented is a wrong notion.
Variables are typeless. but you need to declare variables with var
Global and local scoping for variables. No block level.
Control structures are like C : statements, expressions, for loops
var sayHello = function(name) {
print('hi');
}
sayHello is now a handle to a function.Its powerful since, you can now register them as event handlers.
IN Javascript everything is an expression. there is no statement as such.
Functions are Objects
function Car(year) {
this.year=year;
}
var myCar = new Car(2011);
print (myCar.year);
myCar is an instance of Car.
Encapsulation is not really about security. Its for code maintainence.
prototype is like a backpack. Any method not defined on object is routed to prototype.
Car.prototype.drive = function(dist) {
print('driving..);
this.miles += dist;
}
Car.prototype.tune = function() {print ('tune')};
print (myCar["year"]); --> you can use this instead of dot notation. You can dynamically recieve the parameter since its in a double quote.
Object is nothing but a collection (property holder).
It can be a function, object or a collection of properties
for (var prop in myCar.__proto__) {
print(prop + '\n');
}
Inheritance in Javascript
Composition is better than Inheritance. Ruby and Groovy have delegation (@delegate).
Javascript supports inheritance through method composition.
function Base() {
}
function Dervied() {
}
Derived.prototype = new Base();
Code Quality
jslint is a nice tool to check code quality.
You need to separate the logic from HTML page.
Overall it was an amazing session with good insights on JS
Javascript
Feels like Java & C
Similar to perl in some ways
Untyped Language
Rules
1) Case sensitive
2) goo idea to use ;
3) commenting style is same as Java/C++
4) null and undefined are used to indicated null
5) Strings are single or doule quotes and are immutable
Functional in nature : Functions are first class citizens
Pass and return functions. Everything should be object oriented is a wrong notion.
Variables are typeless. but you need to declare variables with var
Global and local scoping for variables. No block level.
Control structures are like C : statements, expressions, for loops
var sayHello = function(name) {
print('hi');
}
sayHello is now a handle to a function.Its powerful since, you can now register them as event handlers.
IN Javascript everything is an expression. there is no statement as such.
Functions are Objects
function Car(year) {
this.year=year;
}
var myCar = new Car(2011);
print (myCar.year);
myCar is an instance of Car.
Encapsulation is not really about security. Its for code maintainence.
prototype is like a backpack. Any method not defined on object is routed to prototype.
Car.prototype.drive = function(dist) {
print('driving..);
this.miles += dist;
}
Car.prototype.tune = function() {print ('tune')};
print (myCar["year"]); --> you can use this instead of dot notation. You can dynamically recieve the parameter since its in a double quote.
Object is nothing but a collection (property holder).
It can be a function, object or a collection of properties
for (var prop in myCar.__proto__) {
print(prop + '\n');
}
Inheritance in Javascript
Composition is better than Inheritance. Ruby and Groovy have delegation (@delegate).
Javascript supports inheritance through method composition.
function Base() {
}
function Dervied() {
}
Derived.prototype = new Base();
Code Quality
jslint is a nice tool to check code quality.
You need to separate the logic from HTML page.
Overall it was an amazing session with good insights on JS
GIDS Session 6- Microformats and semantic web
Scott Davis on Microformats for the web.
He explains the significance of metadata.
meta name="description" content=""
meta name="keywords" content=""
SEO : Search Engine optimization
RDFa : Microformats http://rdfa.info
Sites like flickr , facebook are using RDFa
www.alistapart.com
www.yelp.com
Article on How Best Buy is using the Semantic Web.
Tools on Semantic Web
GoodRelations Annotator tool
Semantics Radar
Operator
Microformats
e.g. hcalendar,hcard
Mircoformats made Simple.
http://ablognotlimited.com
Social Graph API : Google code
Microformats are not meant to replace webservices. They are meant to augument them.
He explains the significance of metadata.
meta name="description" content=""
meta name="keywords" content=""
SEO : Search Engine optimization
RDFa : Microformats http://rdfa.info
Sites like flickr , facebook are using RDFa
www.alistapart.com
www.yelp.com
Article on How Best Buy is using the Semantic Web.
Tools on Semantic Web
GoodRelations Annotator tool
Semantics Radar
Operator
Microformats
e.g. hcalendar,hcard
Mircoformats made Simple.
http://ablognotlimited.com
Social Graph API : Google code
Microformats are not meant to replace webservices. They are meant to augument them.
Session 5 : JQuery at work
Tom Marrs is giving a session on JQuery at work.
How to get started with JQuery :
JQuery/Javascript Basics --> AJAX --> JQUERY UI --> Jquery Plugins
3 layers of web --> Behaviour (Javascript), Presentation (CSS), Content (HTML)
http://www.sitepoint.com/ : WebDesign for developers.
Some Caveats :
1) Javascript should be unobtrusive
2) Prefer External Styles
3) Just enough CSS --> Tag , Class & ID selectors, Descendent/combination selectors
Demos on javascript with Java and Javascript.
How to iterate, How to navigate the dom, utility methods.
Ajax : $.ajax
JSON : Lightweight $.getJSON
JQuery Widgets : DatePicker, Accordion, Tabs, Dialog Box, Auto complete,Tool tip, JGrowl
How to get started with JQuery :
JQuery/Javascript Basics --> AJAX --> JQUERY UI --> Jquery Plugins
3 layers of web --> Behaviour (Javascript), Presentation (CSS), Content (HTML)
http://www.sitepoint.com/ : WebDesign for developers.
Some Caveats :
1) Javascript should be unobtrusive
2) Prefer External Styles
3) Just enough CSS --> Tag , Class & ID selectors, Descendent/combination selectors
Demos on javascript with Java and Javascript.
How to iterate, How to navigate the dom, utility methods.
Ajax : $.ajax
JSON : Lightweight $.getJSON
JQuery Widgets : DatePicker, Accordion, Tabs, Dialog Box, Auto complete,Tool tip, JGrowl
GIDS Award ceremony
Best .NET productivity tool : Code rush
Best Collobaration tool : Adobe acrobat connecct
Best Content Management and Document Managment tool :Microsoft sharepoint 2010
Best Modeling tool : IBM Rational rose
Change and Configuration Management : Telerik
Testing category : Junit testing framework.
Security Category : Microsoft security essentials.
Web Development : Adobe Flash Platform
Mobile development : Nokia symbian platform
Frameworks : .NET framework
Databases : Dev Express Analytics
Session 4 : HOw to create a beautiful web
Harish Vaidyanathan from MIcrosoft is giving a quick session on HTML 5, IE 9.
Demo on Native HTML 5
Installing websites as applications. If you have IE 9 installed, you can PIN applications.
Graphical capabilities in IE 9
Browser scales across multiple cores.
All of graphics is offloaded to GPU. Leverage native capabilities in IE. the aquarium demo rocked in IE9 whereas it sucked in chrome.
There is also another fishbowl demo where IE9 wins hands down against Chrome.
IE 9 Patterns
html5labs.com
Microsoft is also annoucing an early look at Internet Explorer 10 (IE 10). It moves the web forward by being 100% compatible with Html 5. and supports css gradients, multi column Layout , ECMA script 5 .
ie6countdown.com : Microsoft website to initiate people to move away from IE 6. If people come to your website from IE6, send a message to them buy copying the piece of code.
Good to know that Microsoft too is joining the HTML5 bandawagon.
Demo on Native HTML 5
Installing websites as applications. If you have IE 9 installed, you can PIN applications.
Graphical capabilities in IE 9
Browser scales across multiple cores.
All of graphics is offloaded to GPU. Leverage native capabilities in IE. the aquarium demo rocked in IE9 whereas it sucked in chrome.
There is also another fishbowl demo where IE9 wins hands down against Chrome.
IE 9 Patterns
html5labs.com
Microsoft is also annoucing an early look at Internet Explorer 10 (IE 10). It moves the web forward by being 100% compatible with Html 5. and supports css gradients, multi column Layout , ECMA script 5 .
ie6countdown.com : Microsoft website to initiate people to move away from IE 6. If people come to your website from IE6, send a message to them buy copying the piece of code.
Good to know that Microsoft too is joining the HTML5 bandawagon.
HTML 5 Deep dive
Venkat subramaniam is giving a deep dive into HTML 5 features.
Presenatation is a todo list in textmate instead of a presentation, which is quite cool.
New HTML 5 tags like section,article,aside,header,footer
CSS 3 Pseudo- classes
nth-of-type(even) and nth-of-type(odd) are new things for changing background for alternate colours.
last-child is special for last row. can be applied for tr and td.
No more classes through each element
Targeted input types
email : input type=email
placeholders :get a clue for placeholders in grayed out manner
placeholder="email@example.com"
autofocus : set focus on field
turning off autocomplete
required
pattern
url
search
number
range min 1 max 10 value
date , datetime,color
Inplace editing : contenteditable
border-radius:10px; ( oval box)
moz-tranform,webkit-transform,transform --> for rotating sections : rotate(degree)
transparencey
box-shadow
dragdrop
Audio and video
Client side data
localStorage is par of window object. its part of a hashMap.
Benefits
local storage,session
offline web apps
GIDS Session 3 - HTML 5
Scott Davis : I really loved his sessions last year. He is a real expert on Grails. He has a website on thirstyhead.com.
Starts of with a quip on his new shirt.
HTML 5 enhancements
1) Form enhancements, mobile support
Biggest new feature. --> Semantics over markup. Currently pages are cluttered with Divs currently. You can provide separate tags for various page sections like nav, header , footer and sections.
Screen readers can parse the code and act accordingly.
Desktop Browser support for HTML 5
Google already uses HTML 5 and provides outstanding support in their chrome browser.
Apple Safari already supports HTML 5
Mozilla Firefox and Opera supports HTML 5 as well.
IE 9 supports HTML 5 specification even though its not available on windows xp.
Good that everyone is now meeting the specifications.
Support for Mobile in HTML 5
All applications are HTML 5 with a thin app wrapper like NYTImes. Javascript is the write once run anyware platform finally :).
RIM Playbook has outstanding HTML 5 support.
Cost to implement technology is very high initially, and the value is very low. Dont wait for final standard. You need to wait for Oreilly book on that technology then its here to be used :)
HTML 5 is here to stay and start now instead of waiting .
http://diveintohtml5.org by Mark Pilgrim . Entirely free online book.
New Elements
Doctype is amazingly simple :
New semantic elements: header, nav, footer,section, article, aside.
HTML 5 Reset Stylesheet : Include all these to use display:block;
http://html5shiv.google.com/svn/trunk/html5.js
Form Enhancements
INput elements support following new values : tel,search, url, email, dateime, date, month, week, time, email .
Any browser that doesnt support the new values, will present a text instead. this is true only for desktop browsers. But mobile browses have issues.
Modernizr
Checks for html features support. New idea is to program to the most mordern browser and pollyfill for the others using Modernizr.
Mobile support : Smart phones and Tablets are selling really fast.
www.html5rocks.com
App Cache : explicitly cache js, css, images.
Cache Manifest can explicity cache resources.
Cache,Network and fallback sections.
typical application could be an twitter client in html5 that can switch between online and offline mode. Full control of the cache through javascript.
Data Storage : Allows you to storage as a hashmap.Upto 5 MB of local storage is available per domain per url.
Web SQL database : supported by all browsers except firefox and IE.
Video support
Youtube html5 video player. Use video with object tags combination.
Some more websites to checkout :
http://html5doctor.com
http://html5demos.com/
ON the whole it was an awesome session , that really opened up the world of HTML 5.
HTML 5 Cross browser Polyfills is the way to go
GIDS Session 2 : Demo on Blackberry playbook
Next up is a session on playbook that was launched in US yesterday
What is a Tablet?
Combines best of both worlds : smartphone and Laptop
Features of Blackberry playbook
features are amazing : dual core 1ghz processor , 7 inch touch screen , front and rear cameras.
multitasking --> this is not currently possible in ipad
full support for adobe flash sites.
support for HTML 5
HDMI PORT
ultra convenient and less than a pound
sales force integration
lots of enterprise features : securely pair Blackberry, document viewing and editing over 2000 apps available.
Developing for playbook
Browser : Flash 10.x + html5
RIA : Adobe AIR + blackberry web works
www.blackberry.com/playbook
GIDS Session 2 : Demo on Blackberry playbook
Next up is a session on playbook that was launched in US yesterday
What is a Tablet?
Combines best of both worlds : smartphone and Laptop
Features of Blackberry playbook
features are amazing : dual core 1ghz processor , 7 inch touch screen , front and rear cameras.
multitasking --> this is not currently possible in ipad
full support for adobe flash sites.
support for HTML 5
HDMI PORT
ultra convenient and less than a pound
sales force integration
lots of enterprise features : securely pair Blackberry, document viewing and editing over 2000 apps available.
Developing for playbook
Browser : Flash 10.x + html5
RIA : Adobe AIR + blackberry web works
www.blackberry.com/playbook
What is a Tablet?
Combines best of both worlds : smartphone and Laptop
Features of Blackberry playbook
features are amazing : dual core 1ghz processor , 7 inch touch screen , front and rear cameras.
multitasking --> this is not currently possible in ipad
full support for adobe flash sites.
support for HTML 5
HDMI PORT
ultra convenient and less than a pound
sales force integration
lots of enterprise features : securely pair Blackberry, document viewing and editing over 2000 apps available.
Developing for playbook
Browser : Flash 10.x + html5
RIA : Adobe AIR + blackberry web works
www.blackberry.com/playbook
GIDS 2011 - .Web day Session 1
Arijit Chatterjee from Adobe is giving an excellent session on Building Next Generation of Experiences.
His presentation is full of interesting images. I like the fact that there is less content in the presentation and more of verbal communication.
The main message behind the presentation is to how to make the user experience better - Understand your users, how to make beautiful websites, understanding local sentiments and speaking in local language.
Some key things to keep in mind
1) Build trust
2) Maintain Focus on workflows --> move from one task to another
Create in context help - if necesary
3) Involve all Senses - the more sensory organs are involved, the more you will be able to retain users.
for web app Visual,Touch,Sound are the key .
4) do not build something Jazzy - it might drive people away from your site
5) Acknowledge Status clearly once you are done with something irrespective of Victory or Failure.
6) 3 D display wherever relavant
7) Use sound - Judiciously
8) use of high definition haptics
Wrapping up with a few stunning images . Aquarium Sink, Bubble Cosmos , Interactive multi modal workspace.
Saturday, July 18, 2009
Post Lunch session -OSGI
Lunch was extremely good and felt good after eating. Had only less though so as to keep in make.
Now the topic is on OSGI by Sameera Jayasoma . WSO2 is an open source company hased in Srilanka. Their main product is WSO2 carbon,Which is a fully componentized SOA platform based on OSGI. Then there was some PR on their company.
Modular Systems
Break large system into more smaller,understandable units called modules.Benefits of modular systems are reuse,abstraction,division of labour and ease of repair.
Module should be self contained,highly cohesive and loosely coupled.
Java for building Modular systems
--> provides class level modularity(public, non public methods)
--> we need somthing like external packages, internal packages in a jar
ClassLoader hierarchy : Bootstrap classloader (rt.jar) --> extension classloader (ext.jar) --> application classloader (a.jar,b.jar)
Problems with JARs
--> Jar is unit of deployment in Java and typical java app consists of set of jar files
--> no runtime representation for a JAR.
when java loads a class, it tries to load class one by one in the classpath.
--> multiple version of jar files cannot be loaded simultaneoulsy
--> Jar files cannot declare their dependencies on other jars
Java lacks true modularism and dynamism. Java has given flexibility to build system on top of it. This is called OSGI (dynamic module system for java)
OSGI
--> Bundle is a unit of modularization of OSGi. OSGI app is a collection of Bundle.
Bundle is similar to jar and contains additional metada in Manifest.mf file. In osgi , java package is the unit of information hiding. unlike in jar when class is the
unit of information hiding.
--> bundle can share and hide packages from other bundles.
sample manifest.mf file
Bundle-MainfestVersion:2
Bunle-Name :
Bundle-SymbolicName:
Bundle-Version:1.0.0 (major,minor,micro version)
Export-Package
Import-package:
symbolic name and version are unique for a bundle. default value for version is 1.0.0
all packages in bundle are hidden from other bundle by default. if we need to share package explicitly mention the name.
Bundles & Class Loaders
OSGI gives separate classloaders per bundle,thereby eliminating hierarchial classloading in java
System bundle is a special bundle that represents the framework and registers system services
Tooling for osgi : eclipse pde is the best of the lot
osgi provides command line interface
ss -> lists all the bundles in the system
b/bundles - gives the list of informaiton about the bundle.export information.
b 0 --> gives system bundl information
export-hundle and import-bundle
require-bundle : import all exported packages from another bundle. but this is discouraged.
Issues with require bundle
Split packages,bundle changes over time,require bundles chain can occur.
fragment bundles : attached to a host bundle by the framework.Shares parent classloader.
runtime class loading in osgi: order of loadin
1) call parent clas loader (only for java.*)
2)imported packages
3)required bundles
4)load from its own internal classpath
5)Load from fragment classpath
Usage of fragment bundle 1) provide translation files to different locales
OSGI specifications --specifies framework and specificaions
osgi alliance
current version is 4.1
osgi can be considered as a layer on top of java.can also use jni to talk to OS. functionality of framework is deivided into several layers
1)module 2)lifecycle 3(
Lifecyce layer : manage lifecyle of api.
bundle starts --> installed,resolved,starting,active,stopping,uninstalled.
Register a service using bundle service using registerservice on bundlecontext
Using a service --> find a serviceReference,get the object,cast it to a proper type and use the service
Events and Listeners
framework fires serviceevents during registering a service,unregistering a service
services are dynamic. monitor services using service listeners,service trackers,declarative service,iPOJO and blueprint services.
Service Tracker
declarative service
SCR (service component runtime)
Now the topic is on OSGI by Sameera Jayasoma . WSO2 is an open source company hased in Srilanka. Their main product is WSO2 carbon,Which is a fully componentized SOA platform based on OSGI. Then there was some PR on their company.
Modular Systems
Break large system into more smaller,understandable units called modules.Benefits of modular systems are reuse,abstraction,division of labour and ease of repair.
Module should be self contained,highly cohesive and loosely coupled.
Java for building Modular systems
--> provides class level modularity(public, non public methods)
--> we need somthing like external packages, internal packages in a jar
ClassLoader hierarchy : Bootstrap classloader (rt.jar) --> extension classloader (ext.jar) --> application classloader (a.jar,b.jar)
Problems with JARs
--> Jar is unit of deployment in Java and typical java app consists of set of jar files
--> no runtime representation for a JAR.
when java loads a class, it tries to load class one by one in the classpath.
--> multiple version of jar files cannot be loaded simultaneoulsy
--> Jar files cannot declare their dependencies on other jars
Java lacks true modularism and dynamism. Java has given flexibility to build system on top of it. This is called OSGI (dynamic module system for java)
OSGI
--> Bundle is a unit of modularization of OSGi. OSGI app is a collection of Bundle.
Bundle is similar to jar and contains additional metada in Manifest.mf file. In osgi , java package is the unit of information hiding. unlike in jar when class is the
unit of information hiding.
--> bundle can share and hide packages from other bundles.
sample manifest.mf file
Bundle-MainfestVersion:2
Bunle-Name :
Bundle-SymbolicName:
Bundle-Version:1.0.0 (major,minor,micro version)
Export-Package
Import-package:
symbolic name and version are unique for a bundle. default value for version is 1.0.0
all packages in bundle are hidden from other bundle by default. if we need to share package explicitly mention the name.
Bundles & Class Loaders
OSGI gives separate classloaders per bundle,thereby eliminating hierarchial classloading in java
System bundle is a special bundle that represents the framework and registers system services
Tooling for osgi : eclipse pde is the best of the lot
osgi provides command line interface
ss -> lists all the bundles in the system
b/bundles
b 0 --> gives system bundl information
export-hundle and import-bundle
require-bundle : import all exported packages from another bundle. but this is discouraged.
Issues with require bundle
Split packages,bundle changes over time,require bundles chain can occur.
fragment bundles : attached to a host bundle by the framework.Shares parent classloader.
runtime class loading in osgi: order of loadin
1) call parent clas loader (only for java.*)
2)imported packages
3)required bundles
4)load from its own internal classpath
5)Load from fragment classpath
Usage of fragment bundle 1) provide translation files to different locales
OSGI specifications --specifies framework and specificaions
osgi alliance
current version is 4.1
osgi can be considered as a layer on top of java.can also use jni to talk to OS. functionality of framework is deivided into several layers
1)module 2)lifecycle 3(
Lifecyce layer : manage lifecyle of api.
bundle starts --> installed,resolved,starting,active,stopping,uninstalled.
Register a service using bundle service using registerservice on bundlecontext
Using a service --> find a serviceReference,get the object,cast it to a proper type and use the service
Events and Listeners
framework fires serviceevents during registering a service,unregistering a service
services are dynamic. monitor services using service listeners,service trackers,declarative service,iPOJO and blueprint services.
Service Tracker
declarative service
SCR (service component runtime)
Powerful Reporting with BIRT
This is the sesison that i hope to get the maximum benefits from especially since we have started using BIRT for our projects. The session is by Krishna Venktraman from Actuate, who is the director
Background
--> Most applications have some kind of data visualization need. Real world applications don't consider reporting when they design the application. BIRT provides a framework that manages all the reporting requirements.
Traditional approach :
Buy closed source commercial products or build custom developed solution
With open source based products things become much easier.
Emergence of BIRT Project
BIRT was initiated in 2004 as a top level eclipse project. IBM,Innovent and Actuate are the key members.
Focus was BIRT was to make report development easy.Its open and standards based and provides for rich programmatic control. It has both simplicity and well as Power to create complex reports. BIRT supports of concept of reporting libraries that promotes reuse and reduces changes.
The main audience for BIRT was report developers,advanced report developers who use scripting, runtime integration developers who use birt viewer and engine apis, report design integrator who use design engine apis, extension developers who develop extention points and finally core development who do eclipse development itself.
There were five major releases since project launch with 1.0 ,2.0,2.1,2.2,2.3,2.5 as the versions. It was built from ground up and lot of community feedback was take into account
Key capabilities
--> Simple to complex layouts
--> Comprehensive data access
--> Output formats
--> Reuse and developer productivity
--> Interactivity and linking
--> Multiple usage and productivity aids
Some key features added in 2.x versions
--> ability to join datasets
--> enhanced chart activity
--> multiple master page support
--> Dynamic crosstab support
--> CSS files can be linked
--> Emitters for XLS,Word , PPT and Postscript
--> Webservices can act as datasource
--> Javascript/Java Debugger
BIRT design gallery : some of the displays llok really good.
High level BIRT acrhitecture
Two key components
1) Report Design Engine
2) Report runtime Engine
at the end of design process we get a .rptdesign. report engine then looks at the file, interprets it, fetches the data and goes about the generation process. we get an .rptdocument. Key services of report engine are generation services,data services,charting engine and presentation services.
BIRT exchange is a community site for posting all BIRT related issues.
Key API
a) Design Engine API b) Report Engine API c) Chart Engine API
Extension points
--> data source extensibility
--> custom business logic extensibility using scripting and acess java code
--> Visualization extensibility
--> Rendering content for output (emitters)
Deployment options
--> Commercial Report Server
--> J2EE Application server
--> Java application
Actuate provides Actuate BIRT report designer,BIRT report studio, BIRT Viewer,BIRT Interactive Viewer,deployment kits, iServer Express,iServer Enterprise.
Now for the actual report designs...
Just had an overview of the birt tool. Going through the series of demos on basic report, now basic charts, then crosstab/matrix report.
Book Marks and hyper links
Click the element and then pickup bookmark from properties . Now go to the place where you want to place hyperlink and link up the bookmark.
Filters
Limit what to display . You can limit at dataset level or at table level.
Sub Reports
Main Report --> Outer table
Sub Report --> nested table
Pass data value from outer table to nested table
In BIRT we need to nest tables in order to create sub reports.
Use Dataset parameter binding on the child set to get the data from parent dataset
BIRT Scripting
Mozilla Rhino script engine is embedded in BIRT.
Scripting = Expressions + Events
It users server side scripting. All the export options will get the same output.
Event Handling
Initialization Report level events (-initalize,-beforeFactory) --> Data source Open (-beforeOpen,-open) --> Data Set Generation (--beforeOpen,--open,fetch) --> Dataset Generation
Generation phase : Report level,datasource level, element level
Render : report level,element level
can implement powerful logic using scripting
Report Libaries
Just use export library by right clicking on the rptdesign file. Then click on use library and say use library.It has all the data sources, data sets and report items.
Library is a container of reporting items.
Can do local overrides on things imported from libraries
Templates
File --> New Template.Serves as starting points for speedy report development.
Display a visual image. then register this template with the new wizard.
Last piece was a demo on how to deploy the reports.
One big disappointment was i couldn't get any idea on how to integrate report engine and birt viewer with the custom applications.
On the whole it was a good session.
Keynote II
Enhancing the developer productivity using RAD for websphere
--> Interesting the two main competitors give the keynotes one after the other
IBM Rational Architecture and construction
--> for solution,software and enterprise architects : Rational Data Architect,Rational Software modeler
--> for architects and designers who code in java,c++,xml --> Rational software architect Standard edition
--> Rational application developer --> for developers
IBM RAtional Applicaiton Developer for websphere
--> accelerates development
--> do even traceablity matrix
--> support for jpa and code generation
Comprehensive JEE5 tools
Unit testing is provided out of box
Visually layout JPA and EJB 3.0 classes
Convert UML to WSDL using RSA product
Provides excellent AJAX support
Enhanced support for Web 2.0
Declare POJOs and make it as REST service. Call Rest service as JSPs.
Javascript editor and debugger
JSF support
visual development of JSF pages
Data abstraction objects for easy data connectivity - SDO
Automatic code generation for data validation,formatting
Integration of third party JSF libraries
Portal development support is also excellent.
One of the very key features is to Automate performance and memory testing . This is built on top of eclipse TPTP.
Automates azpplication testing using WebSphere Application Server 6.0,6.1 and 7.0
IBMs strategy is to deliver high quality solutions by moving towards flexible architecture,automation layer,reduce onboarding
JAZZ platform : is meant for open community.
Mail id of the presenter is :bhrengen@in.ibm.com
Keynote address for the day
First again a PR from SaltMarch :) .
The topic will be Plug-in to rapid development on Weblogic with Eclipse by Dhiraj Bandari
Dhiraj Bandari is as sales consultant from Oracle, moved on from BEA with the acquisition.
Oracle Enterprise Pack for Eclipse (OEPE) is a plugin that is really useful when we used weblogic application server integration. Provides the following features
--> Weblogic server (start,stop)
--> web services
--> spring
--. JSF + facelets
--> DB tools
--> ORM workbench
ORM workbench
--> creates the entity classes and helps to run all db functionalities
--> supports eclipselink,kodo,openjpa
--> has database schema broswer similar to TOAD
--> provides spring support
Tools for JAX-WS web services
--> New facets for weblogic web service development
Weblogic Server Tools
--> Run/deploy/debug locally or remotely
--> FastSwap ,shared libraries,Deployment plans
--> Migration support
Weblogic deployment descriptor editors
Oracle's strategy is to stop development on weblogic workshop. They will develop & enhance only JDeveloper and Enterprise pack for eclipse.
FastSwap Feature -- for iterative development
Traditional JEE Development cycle is Edit --> Build --> Deploy --> Test
Using Modern IDES it becomes Edit --> Deploy --> Test
FastSwap's goal is to eliminate the Deploy step Edit --> Test
FastSwap detects changes to class files,redfined changed classes,Non invasive and development mode only
Demo on FastSwap operation
How to enable fast swap feature --> go to weblogic application deployment descriptor and ebale fast swap. Then instant chagnes to ejb classes,web classes can be seen.
Day 2 live blogging - EclipseSummit India
Participants are quiely settling in. Strength has considerably dwindled compared to yesterday. There was unexpected drizzle in Bangalore , causing me to get partly wet and making me feel miserable in an AC room.
Wireless Internet connection does not seem to work as expected :(. Hope to post all these one by one when i am back in the network.
Expectations for today
Today I am eagerly looking forward to attend BIRT workshop in the morning followed by a sumptuous lunch and then another workshop on OSGI.
Wireless Internet connection does not seem to work as expected :(. Hope to post all these one by one when i am back in the network.
Expectations for today
Today I am eagerly looking forward to attend BIRT workshop in the morning followed by a sumptuous lunch and then another workshop on OSGI.
Friday, July 17, 2009
JPA 2.0 New Features
JPA 2.0 is releasing 2009 fall. (JSR 317)
Goal
--> Fil in ORM mapping gaps
--> Make object modeling more flexible
--> offer simple cache control abstraction
--> allow advanced locking settings
--> JPQL enhancements
More standardized properties
--> some properties are used by each and every driver
Persistent unit properties like javax.persistence.jdbc.driver, javax.persistence.jdbc.url
JPA 2.0 supports join table as well as f key relationships.
Collections of embeddables or basic values.
This is made possible using elementcollection annotation
OrderedLists
order is maintained even if you move things around by using an index.
More Map flexibility
Map Keys and values can be : Basic objects,embeddables, entities
Enahcned embedded support
Embeddables can be nested and can have relationships
Access Type options
--> mix access modes in a hierarchy (field or properties)
@Access annotation
Derived Identities
JPA 1.0 relationship field cannot be part of the id
JPA 2.0 @Id + @OneToOne
Second Level Cache
API for operating on entity cache which is accessible from EntityManagerFactory
Supports only ver basic cache operations , which can be extended by vendors
@Cacheable annotation on entity (default is true)
There is also a property by the name shared-cache-mode to denote per PersistenceUnit whether to cache.
--no entities
--only cacheable entities
-- all entities
Properties cacheRetreiveMode and cacheStoreMode per EM method call whether to
read from cache
Locking
1.0 allows only for optimistic locking
2.0 provides for optimistinc locking by default
pessimistic locking can be used per entity or query
Lock mode values introducted
Optimistic (=READ)
optimistic_force_increment(=write)
pessimistic_read
pessimistric_write
API Additions
Lockmode parameter added to find,refresh
Properties parameter added tofind,refresh,lock
Other useful additions
void detach(Object entity)
unwrap
Query API addition
getFirstResult
getHints
Enhanced JP QL
Timestamp literals
Non-polymorphic queries
IN expression may include collection parameter --> IN (:param)
Ordered List indexing
CASE statement
Criteria API
Similar to eclipselink expressions,hibernate criteria
Criteria API - Canonical Metamodel
--> For every managed class , there is a metamodel class
Load State Detection
JPA can integrate with Bean validation (JSR 303) : Hibernate Validator is an implentation
JPA 2.0 shpped as part of Java EE6 release
Goal
--> Fil in ORM mapping gaps
--> Make object modeling more flexible
--> offer simple cache control abstraction
--> allow advanced locking settings
--> JPQL enhancements
More standardized properties
--> some properties are used by each and every driver
Persistent unit properties like javax.persistence.jdbc.driver, javax.persistence.jdbc.url
JPA 2.0 supports join table as well as f key relationships.
Collections of embeddables or basic values.
This is made possible using elementcollection annotation
OrderedLists
order is maintained even if you move things around by using an index.
More Map flexibility
Map Keys and values can be : Basic objects,embeddables, entities
Enahcned embedded support
Embeddables can be nested and can have relationships
Access Type options
--> mix access modes in a hierarchy (field or properties)
@Access annotation
Derived Identities
JPA 1.0 relationship field cannot be part of the id
JPA 2.0 @Id + @OneToOne
Second Level Cache
API for operating on entity cache which is accessible from EntityManagerFactory
Supports only ver basic cache operations , which can be extended by vendors
@Cacheable annotation on entity (default is true)
There is also a property by the name shared-cache-mode to denote per PersistenceUnit whether to cache.
--no entities
--only cacheable entities
-- all entities
Properties cacheRetreiveMode and cacheStoreMode per EM method call whether to
read from cache
Locking
1.0 allows only for optimistic locking
2.0 provides for optimistinc locking by default
pessimistic locking can be used per entity or query
Lock mode values introducted
Optimistic (=READ)
optimistic_force_increment(=write)
pessimistic_read
pessimistric_write
API Additions
Lockmode parameter added to find,refresh
Properties parameter added tofind,refresh,lock
Other useful additions
void detach(Object entity)
unwrap
Query API addition
getFirstResult
getHints
Enhanced JP QL
Timestamp literals
Non-polymorphic queries
IN expression may include collection parameter --> IN (:param)
Ordered List indexing
CASE statement
Criteria API
Similar to eclipselink expressions,hibernate criteria
Criteria API - Canonical Metamodel
--> For every managed class , there is a metamodel class
Load State Detection
JPA can integrate with Bean validation (JSR 303) : Hibernate Validator is an implentation
JPA 2.0 shpped as part of Java EE6 release
JOptimizer
Back after a sumptuous lunch
Tool by Embarcadero technogies : http://www.embarcadero.com/products/j_optimizer/
Available standalone as well as eclipse plugin
Uses
--> Detecting excessive object allocation
--> memory leaks
--> detecting bottle necks
--> code coverage/code quality
--> thread debugging
--> Breakdown JEE requests
--> request analyzer
remotely connect and find which layer is causing problems. Can go into any level of detail.
code coverage
how to analyze and find out threading issues ?
--> Detecting deadlocks and visually analyze the deadlocks.
richard.davies@embarcadero.com
Tool by Embarcadero technogies : http://www.embarcadero.com/products/j_optimizer/
Available standalone as well as eclipse plugin
Uses
--> Detecting excessive object allocation
--> memory leaks
--> detecting bottle necks
--> code coverage/code quality
--> thread debugging
--> Breakdown JEE requests
--> request analyzer
remotely connect and find which layer is causing problems. Can go into any level of detail.
code coverage
how to analyze and find out threading issues ?
--> Detecting deadlocks and visually analyze the deadlocks.
richard.davies@embarcadero.com
Patterns in eclipse
Three rules of eclipse
plugin may not change screen,task and create objects unless user asks for it
1) User owns the screen
2) User owns the CPU
3) User owns the memory
--> Do not use singleton pattern.Memory allocation never goes away
Building the UI withoug loading plugins
Decoupling using adapters
--> dynamic implementation of an interface
--> class can be adapted to any interface
--> best example is the properties view
4) most of the items are implemented as services
Located,Scoped and Destroyed
5) Separation of concerns
same class should not do a,b,c,d,e
use handlers
6) scalable UI
browse instead of combo
filters instead of presenting a large set of info
always use group data in relevant sections
provide deselect /select all buttons
differentiate and place common buttons appropriately
plugin may not change screen,task and create objects unless user asks for it
1) User owns the screen
2) User owns the CPU
3) User owns the memory
--> Do not use singleton pattern.Memory allocation never goes away
Building the UI withoug loading plugins
Decoupling using adapters
--> dynamic implementation of an interface
--> class can be adapted to any interface
--> best example is the properties view
4) most of the items are implemented as services
Located,Scoped and Destroyed
5) Separation of concerns
same class should not do a,b,c,d,e
use handlers
6) scalable UI
browse instead of combo
filters instead of presenting a large set of info
always use group data in relevant sections
provide deselect /select all buttons
differentiate and place common buttons appropriately
Eclipse and Building Data Centric RIA
Demo of portal type application using flex
Interactive charts --> looked really good with nice drilldowns
Rich Internet Applicaions
1) REal time data push
2) resizable
3) Rich Data entry
4) Chat
5) Data Synchronization
6) Audio and Video
7) Offline
Open Screen platform : Adbobe flash platform
clients --> AIR and flash player
Servers/services --> Blazeds,data services
Flex framework
tools to design and develop : flex builder
Understanding flex
written in mxml markup
flex sdk is free and opensources
flash builder : eclipse based professional IDE
benefits :
UI goes to client only once . after that only data changes..
Approach for Developing RIAs
Design focused
Data focused
Coding
Testing and Deployment
Demo
Model Driven development
Steps
1) Create a new project
2) Create a data model (fml file)
3) Deploy model to LCDS (Live cycle data services)
4) import fml file
5) create mxml and add datagrid.
6) Dnd datamodel to data grid
7) Run application.
Business logic can be written in custom assembler. Normal one is fiber assembler.
Even tomcat is fine. Internally fml creates java classes at runtime during startup.
Data Centric Development using Flash Builder
1) Define Service (CF,php,java,soap,rest)
2) Model Service (flash builder examines service, builds design-time model)
3) Bind Operations to Flex UI Components (data binding,UI generation,Paging,Data-management)
AMF : Action script messaging format used for sending and reciving data , more efficient than json and xml.
Testing and deployment
Network monitor
unit testing framework
Command line builds ( coming soon)
Demo of Ruby service plugin
Data Centric Development Extensibility
Extension points
Key interfaces and classes for custom service
IServiceWizard,IServiceIntrospector,IServiceProperties
FlexService,FlexServiceOperation,FlexServiceConfig
Key interfaces and classes for componentConfigurator
Flash Catalyst
Imports photoshop files and analyzes it. Based on eclipse platform. takes mockups and creates flex application based on them. Generates flex code behind the scenes.
Wow.. thats too good
Require flash builder license and run time license for LCDS
Resource
www.flex.org
Tour de flex : www.adobe.com/devnet/flex/tourdeflex/
Interactive charts --> looked really good with nice drilldowns
Rich Internet Applicaions
1) REal time data push
2) resizable
3) Rich Data entry
4) Chat
5) Data Synchronization
6) Audio and Video
7) Offline
Open Screen platform : Adbobe flash platform
clients --> AIR and flash player
Servers/services --> Blazeds,data services
Flex framework
tools to design and develop : flex builder
Understanding flex
written in mxml markup
flex sdk is free and opensources
flash builder : eclipse based professional IDE
benefits :
UI goes to client only once . after that only data changes..
Approach for Developing RIAs
Design focused
Data focused
Coding
Testing and Deployment
Demo
Model Driven development
Steps
1) Create a new project
2) Create a data model (fml file)
3) Deploy model to LCDS (Live cycle data services)
4) import fml file
5) create mxml and add datagrid.
6) Dnd datamodel to data grid
7) Run application.
Business logic can be written in custom assembler. Normal one is fiber assembler.
Even tomcat is fine. Internally fml creates java classes at runtime during startup.
Data Centric Development using Flash Builder
1) Define Service (CF,php,java,soap,rest)
2) Model Service (flash builder examines service, builds design-time model)
3) Bind Operations to Flex UI Components (data binding,UI generation,Paging,Data-management)
AMF : Action script messaging format used for sending and reciving data , more efficient than json and xml.
Testing and deployment
Network monitor
unit testing framework
Command line builds ( coming soon)
Demo of Ruby service plugin
Data Centric Development Extensibility
Extension points
Key interfaces and classes for custom service
IServiceWizard,IServiceIntrospector,IServiceProperties
FlexService,FlexServiceOperation,FlexServiceConfig
Key interfaces and classes for componentConfigurator
Flash Catalyst
Imports photoshop files and analyzes it. Based on eclipse platform. takes mockups and creates flex application based on them. Generates flex code behind the scenes.
Wow.. thats too good
Require flash builder license and run time license for LCDS
Resource
www.flex.org
Tour de flex : www.adobe.com/devnet/flex/tourdeflex/
EclipseLink : High Performance Persistence
I have used eclipselink on one of the key projects lastyear. It was donated by Oracle to Eclipse foundation. Toplink became eclipselink. I was really impressed by its implementation of JPA and customizations such as Criteria Queries. Hoping to learn more from this session.
EclipseLink Architecture
Supports JavaSE,EE,OSGi and Spring
Eclipselink solution comprises JPA implentation,Moxy,EIS,SDO(service data objects),DBWS (database webservice --> want xml from relational data ).
JPA
--> supports JPA 1.0 with many advanced features
--> simplified configuration of using annotations and/or xml.
--> Best ORM for Oracle database
Tool Support
-->EclipseLink is a runtime project supported by IDEs.
-->Eclipselink supported by Dali
-->MyEclipse
-->Oracle Jdeveloper 11g,Enterprise Pack for eclipse
--> Netbeans
--> Standalone workbench(Swing project)
Eclipselink distributions
--> Eclipse,Oracle toplink,weblogic,glassfish,spring framework,JOnAS
JPA persistence Provider(eclipselink) sits between Java SE/EE and rdbms
Core JPA Mappings
ID (primary key)
Basic (field mappings)
Relationships
OneToOne,ManytoOne,OneToMany,ManyToMany
Configurations
Persistence.xml
Mapping Annotations
Query hints
Advanced Mappings
Eclipselink orm.xml
Examples of Advanced Mappings
class level --> @Converter(name="",converterClass="")
field level --> @Convert(name="")
@PrivateOwned (coming in JPA 2.0) : doesnt exist without parent
Caching :
@Cache(type=SOFT_WEAK,coordinationType=SEND_OBJECT_CHANGES)
Optimistic locking :
@OptimisticLocking(type=CHANGED_COLUMNS)
Custom Data type conversions:
@Converter,@TypeConverter,@ObjectTypeConverter
@StructConverter
Query Framework
5 different ways
Entity Model : JPQL
Expressions
QBE
Native : SQL
Stored Procedures
Customizations in queries
--> Locking,Cache usage
--> Optimizations (batching,joining)
--> Result shaping/conversions
--> Stored Proc support
SQL and Stored Procedure directly hit db.
For other 3 query framework is used. Checks for Cache hit,Cache result is used using Object builder)
Annotations for stored procedures
@NamedStoredProcedureQuery and @NamedStoredProcedureQueries
e.g. @NamedStoredProcedureQuery(name="",procedureName="",parameters={})
Hints
eclipselink.read-only : useful in read only screens
Lazy loading & Fetch Groups
Two fetch groups defined automatically --> eagerly loaded fields and lazily loaded fields.Enabled by byte code weaving
Create your own fetch groups and added to query as hint. Overrides default fetch groups.
Caching Advantage :
Shared L2 and persistence context caching
--> Entity cache and not data cache like ehacache that comes with hibernate
Cache Invalidation --> time to live,fixed times, programmable
Cache Coordination --> Messaging,Type specific configuration (invalidate,sync,sync + new,none)
Invalidate is the most used and cheapest one
Annotations for caching : @Cache,@TimeofDay,@ExistenceChecking
Concurrency Protection :
@OptimisticLocking : Numeric,Timestamp,All Fields,Selected fields,Changed field
Pessimistic locking : using hit eclipselink.pessimistic-lock
Dealing with DB Triggers
@ReturnInsert and @ReturnUpdate : efficiently reread modified data in Oracle db.
Change Tracking
@ChangeTracking annotation to configure the way changes to Entities are computed
Attribute level ,object level, deferred ,auto
Performance Options summary
--> ChangeTracking
--> Read only queries
--> parameter binding
--> joining
--> inheritance
--> concurrency
--> dynamic expressions
Moxy : Object XML Binding
JavaApp --> Objects --> EclipselinkOXM --> xml
Rich set of mappings provides complete control to map objects to any XSD.
Eclipselink JAXB2 Annotations , Moxy XML
twice as fast as sun ri and xml beans.
API steps
1) Create factory,context
2) Marshal and UnMarshal
SDO : Xml Centric
Wow.. too fast session .. but left me lots to explore in JPA.
Eclipselink 1.1.2 released as part of Galileo
Eclipselink 2.0 --> Fall 2009 ; implements JPA 2.0
DBWS : Generated JAX-WS from DB
EclipseLink Architecture
Supports JavaSE,EE,OSGi and Spring
Eclipselink solution comprises JPA implentation,Moxy,EIS,SDO(service data objects),DBWS (database webservice --> want xml from relational data ).
JPA
--> supports JPA 1.0 with many advanced features
--> simplified configuration of using annotations and/or xml.
--> Best ORM for Oracle database
Tool Support
-->EclipseLink is a runtime project supported by IDEs.
-->Eclipselink supported by Dali
-->MyEclipse
-->Oracle Jdeveloper 11g,Enterprise Pack for eclipse
--> Netbeans
--> Standalone workbench(Swing project)
Eclipselink distributions
--> Eclipse,Oracle toplink,weblogic,glassfish,spring framework,JOnAS
JPA persistence Provider(eclipselink) sits between Java SE/EE and rdbms
Core JPA Mappings
ID (primary key)
Basic (field mappings)
Relationships
OneToOne,ManytoOne,OneToMany,ManyToMany
Configurations
Persistence.xml
Mapping Annotations
Query hints
Advanced Mappings
Eclipselink orm.xml
Examples of Advanced Mappings
class level --> @Converter(name="",converterClass="")
field level --> @Convert(name="")
@PrivateOwned (coming in JPA 2.0) : doesnt exist without parent
Caching :
@Cache(type=SOFT_WEAK,coordinationType=SEND_OBJECT_CHANGES)
Optimistic locking :
@OptimisticLocking(type=CHANGED_COLUMNS)
Custom Data type conversions:
@Converter,@TypeConverter,@ObjectTypeConverter
@StructConverter
Query Framework
5 different ways
Entity Model : JPQL
Expressions
QBE
Native : SQL
Stored Procedures
Customizations in queries
--> Locking,Cache usage
--> Optimizations (batching,joining)
--> Result shaping/conversions
--> Stored Proc support
SQL and Stored Procedure directly hit db.
For other 3 query framework is used. Checks for Cache hit,Cache result is used using Object builder)
Annotations for stored procedures
@NamedStoredProcedureQuery and @NamedStoredProcedureQueries
e.g. @NamedStoredProcedureQuery(name="",procedureName="",parameters={})
Hints
eclipselink.read-only : useful in read only screens
Lazy loading & Fetch Groups
Two fetch groups defined automatically --> eagerly loaded fields and lazily loaded fields.Enabled by byte code weaving
Create your own fetch groups and added to query as hint. Overrides default fetch groups.
Caching Advantage :
Shared L2 and persistence context caching
--> Entity cache and not data cache like ehacache that comes with hibernate
Cache Invalidation --> time to live,fixed times, programmable
Cache Coordination --> Messaging,Type specific configuration (invalidate,sync,sync + new,none)
Invalidate is the most used and cheapest one
Annotations for caching : @Cache,@TimeofDay,@ExistenceChecking
Concurrency Protection :
@OptimisticLocking : Numeric,Timestamp,All Fields,Selected fields,Changed field
Pessimistic locking : using hit eclipselink.pessimistic-lock
Dealing with DB Triggers
@ReturnInsert and @ReturnUpdate : efficiently reread modified data in Oracle db.
Change Tracking
@ChangeTracking annotation to configure the way changes to Entities are computed
Attribute level ,object level, deferred ,auto
Performance Options summary
--> ChangeTracking
--> Read only queries
--> parameter binding
--> joining
--> inheritance
--> concurrency
--> dynamic expressions
Moxy : Object XML Binding
JavaApp --> Objects --> EclipselinkOXM --> xml
Rich set of mappings provides complete control to map objects to any XSD.
Eclipselink JAXB2 Annotations , Moxy XML
twice as fast as sun ri and xml beans.
API steps
1) Create factory,context
2) Marshal and UnMarshal
SDO : Xml Centric
Wow.. too fast session .. but left me lots to explore in JPA.
Eclipselink 1.1.2 released as part of Galileo
Eclipselink 2.0 --> Fall 2009 ; implements JPA 2.0
DBWS : Generated JAX-WS from DB
Keynote address - Day 1
First PR on Saltmarch going on :).
Sponsors : Platinum --> Oracle,IBM and Microsoft
Gold : Actuate,Adobe etc
Key note speaker will be Ramkumar Kothandaram from Microsoft
What is microsoft doing in an eclipse conference !!!
Topic will be interoperability.
Agenda
--> Microsoft's approach to interoperability
--> Open source & Microsoft platform
Need for interoperability
We have diversified client applications (firefox,ms office,Open office , IE8) and server applications (Jboss,.NEt etc..) , storage(EMC2,netapp) , multiple databases, processors(intel,ibm,sun).
Customers buy heterogeneous hardware/sofware. Painful EAI projects used to take a long time. This resulted in interoperability evolution.
Microsofts approach to Interoperatbility
--> Products : All products natively interoperability
--> Colloboration : with Partners,competitors and open source community
--> Standards : Promote interoperability through new and existing standards
--> Developer resources : msdn,codeplex etc
Products
All products like Windows Vista,.net ,Win server 2008,office 2007 support interoperability.
Can consume and expose webservice endpoints.
Colloboration
Apache stonehenge : Project to test for interoperability between various vendors.
MS part of interoperability alliance. Took leadership in webservices interop.
Standards
Participates in over 150 standards bodies
Developer Perspective
PHP on Windows --> PHP FastCGI on IIS
Seems that PHP on windows scales as fast as Apache ..
Then there was introduction to Microsoft Azure which is microsofts cloud computing platform.
Eclipse tools for sliverlight (eclipse4SL) : eclipse plugin for silverlight from soyatech. Looks good to me :). Can build RIA and embed in Html.
Java API for open XML : standard for storing documents. Create a document for server side. http://poi.apache.org
Links to remember
http://www.microsoft.com/web
Codeplex : 80000 open source apps on MIcrosoft application.
On the whole it was a good eye opener on microsoft and its contribution to interoperability.
Sponsors : Platinum --> Oracle,IBM and Microsoft
Gold : Actuate,Adobe etc
Key note speaker will be Ramkumar Kothandaram from Microsoft
What is microsoft doing in an eclipse conference !!!
Topic will be interoperability.
Agenda
--> Microsoft's approach to interoperability
--> Open source & Microsoft platform
Need for interoperability
We have diversified client applications (firefox,ms office,Open office , IE8) and server applications (Jboss,.NEt etc..) , storage(EMC2,netapp) , multiple databases, processors(intel,ibm,sun).
Customers buy heterogeneous hardware/sofware. Painful EAI projects used to take a long time. This resulted in interoperability evolution.
Microsofts approach to Interoperatbility
--> Products : All products natively interoperability
--> Colloboration : with Partners,competitors and open source community
--> Standards : Promote interoperability through new and existing standards
--> Developer resources : msdn,codeplex etc
Products
All products like Windows Vista,.net ,Win server 2008,office 2007 support interoperability.
Can consume and expose webservice endpoints.
Colloboration
Apache stonehenge : Project to test for interoperability between various vendors.
MS part of interoperability alliance. Took leadership in webservices interop.
Standards
Participates in over 150 standards bodies
Developer Perspective
PHP on Windows --> PHP FastCGI on IIS
Seems that PHP on windows scales as fast as Apache ..
Then there was introduction to Microsoft Azure which is microsofts cloud computing platform.
Eclipse tools for sliverlight (eclipse4SL) : eclipse plugin for silverlight from soyatech. Looks good to me :). Can build RIA and embed in Html.
Java API for open XML : standard for storing documents. Create a document for server side. http://poi.apache.org
Links to remember
http://www.microsoft.com/web
Codeplex : 80000 open source apps on MIcrosoft application.
On the whole it was a good eye opener on microsoft and its contribution to interoperability.
Live Blogging from Eclipse summit - Bangalore
Here I am back again with live blogging from Eclipse summit Bangalore.
We are minutes away from launch and there seems to be a lot of Java/Eclipse lovers. The ballroom is really full.
The keynote address is set to begin
We are minutes away from launch and there seems to be a lot of Java/Eclipse lovers. The ballroom is really full.
The keynote address is set to begin
Friday, January 23, 2009
proto.in product vs service startups
Should a startup focus on product or services
By suresh, orangescape
Product
Sell ip
Entry barrier high
Team
Service
Total soln providers - tcs wipro
Game changers - provide answers to customers directly
Vendors
Specialists
Buying strategy
Vendors shop
Specialists investigate
Total solutions negotiate
Game changers partner
By suresh, orangescape
Product
Sell ip
Entry barrier high
Team
Service
Total soln providers - tcs wipro
Game changers - provide answers to customers directly
Vendors
Specialists
Buying strategy
Vendors shop
Specialists investigate
Total solutions negotiate
Game changers partner
proto.in to brand or not to brand
Start internally
Stationery
Visiting cards
Brand language
Passive branding
Email footers
Have attractive footer msg
Attractive title
Employee tshirts
Active branding
Newsletters
Use online templates
Youtube
HUmor with cartoons
Sites like glasbergern
Calendar with half a dosen chicks ;)
Setup billboard in ur office premises
Online ads
Active branding
Stationery
Visiting cards
Brand language
Passive branding
Email footers
Have attractive footer msg
Attractive title
Employee tshirts
Active branding
Newsletters
Use online templates
Youtube
HUmor with cartoons
Sites like glasbergern
Calendar with half a dosen chicks ;)
Setup billboard in ur office premises
Online ads
Active branding
proto.in conversations
Branding
Desolve.co.in
Branding is the visual look of the company
Understand the user"s desired experience
Product doesn't need to have 'all' the features
Macbook air
Keep in mind the product echosystem e.g. Cleartrip.com
Design product service relationships eg ipod
Deliver ur brands promise eg 37signals
Cuwtomers are clever .give them some credit eg cleartrip
Take the burden off the user eg google
Doesn't have always be highly functional eg cooliris
Associate ur brand with unique feature facebook
Don't follow the crowd . Eg cleartrip week starts from monday
Start with user insight from ur research
Design an experience and not a technology system
Keep going back 2 user to verify the concept
Desolve.co.in
Branding is the visual look of the company
Understand the user"s desired experience
Product doesn't need to have 'all' the features
Macbook air
Keep in mind the product echosystem e.g. Cleartrip.com
Design product service relationships eg ipod
Deliver ur brands promise eg 37signals
Cuwtomers are clever .give them some credit eg cleartrip
Take the burden off the user eg google
Doesn't have always be highly functional eg cooliris
Associate ur brand with unique feature facebook
Don't follow the crowd . Eg cleartrip week starts from monday
Start with user insight from ur research
Design an experience and not a technology system
Keep going back 2 user to verify the concept
proto.in conversations
Summary from previous learnings
Monetization strategy
10 miles
Shareware give a trial
Slideshare
Premium model
Laws of economics ; no free lunch
Oversupply of products in teCh space
Learning to price a product
Paid model is good for startups
Experiment early
Word free helps in penetration
Check if it is tewlly free
Bandwidth cost
Support cost
Innovation
Opportunity cost
Amazon webservices
Google adwords can get only 10 per cost
Vc model
For entrpreneurs acceptance is more important than monetizaion initially
Monetization strategy
10 miles
Shareware give a trial
Slideshare
Premium model
Laws of economics ; no free lunch
Oversupply of products in teCh space
Learning to price a product
Paid model is good for startups
Experiment early
Word free helps in penetration
Check if it is tewlly free
Bandwidth cost
Support cost
Innovation
Opportunity cost
Amazon webservices
Google adwords can get only 10 per cost
Vc model
For entrpreneurs acceptance is more important than monetizaion initially
proto.in conversations
Back after lunch
Now the conversations thread has started
Currently in conversation with pagalguy founder allwin.
Topic is do we really need a cofounder
Now the conversations thread has started
Currently in conversation with pagalguy founder allwin.
Topic is do we really need a cofounder
proto.in live blogging
Now for the final Q and A for all teams . One final shot before lunch. Hands tired blogging all the time.
proto.in showcase liveblogging
Finally up is Indiakhelo
Each startup seems to have their own tshirt
Skit in progress now. Their motto is to change the way india plays sports.
Idea is to have sports profile on web.
Video on indiakhelo . Schools can upload results in the portal.
Portal demo under progress now.
Upload results through web,ivrs.
2 models : one is for schools and colleges. Another for galli players. Honesty ratings for them.
Have representatives on all schools. Geez is that possible?
Profiles are public by default. Can be made private also.
16 sports are supported.
Each startup seems to have their own tshirt
Skit in progress now. Their motto is to change the way india plays sports.
Idea is to have sports profile on web.
Video on indiakhelo . Schools can upload results in the portal.
Portal demo under progress now.
Upload results through web,ivrs.
2 models : one is for schools and colleges. Another for galli players. Honesty ratings for them.
Have representatives on all schools. Geez is that possible?
Profiles are public by default. Can be made private also.
16 sports are supported.
proto.in live blgging contd
Next up is Noddler
Ivr system that is human and intelligent
Can personalise it very much
Noddler sandbox launched. Mainly b2b product.targeted at web businesses who need mobile support.
Comapny incubated out of iit chennai
Ivr system that is human and intelligent
Can personalise it very much
Noddler sandbox launched. Mainly b2b product.targeted at web businesses who need mobile support.
Comapny incubated out of iit chennai
proto.in live blogging
Paper plane making fun activity ;)
Here comes the next showcase
Lords automotives
Green and economic fuel kit for two wheelers
By rajesh
First non it presentation ;)
Two wheeler LPG kit
Some features
Dual fuel operation
UN approved
Fulfills all safety norms
Amazing stats ; still 71 percent is on two wheeler in india
Tested with honda activa hey. That's my vehicle
Still test results are yet to be published
Here comes the next showcase
Lords automotives
Green and economic fuel kit for two wheelers
By rajesh
First non it presentation ;)
Two wheeler LPG kit
Some features
Dual fuel operation
UN approved
Fulfills all safety norms
Amazing stats ; still 71 percent is on two wheeler in india
Tested with honda activa hey. That's my vehicle
Still test results are yet to be published
proto.in live blogging
Third up is Iflapp
Adi and vipin
Provide smart solutions for usb to make them smart devices
Use cases
Launch itunes from iflapp for e.g.
Share project without expecting mpp to be there
Carry mails,tasks anywhere and sync them up later.
Patented this technology already
Sell it through oem, distribution channels
Adi and vipin
Provide smart solutions for usb to make them smart devices
Use cases
Launch itunes from iflapp for e.g.
Share project without expecting mpp to be there
Carry mails,tasks anywhere and sync them up later.
Patented this technology already
Sell it through oem, distribution channels
proto.in showcase contd
Next up is yoplr
By raja and dipankar
Plan your trip
Travel site that addresses customers context
Options for holiday theme, age profile of the travelling group, itinerary builder, route helper ( shows fastest route). Multiple destinations are supported. Email, pdf of itierary supported. Have tieup with holiday makers to send quotes.
Revenue model
Started with b2c model
Content covers karnatka and goa. Plan to make it all india
By raja and dipankar
Plan your trip
Travel site that addresses customers context
Options for holiday theme, age profile of the travelling group, itinerary builder, route helper ( shows fastest route). Multiple destinations are supported. Email, pdf of itierary supported. Have tieup with holiday makers to send quotes.
Revenue model
Started with b2c model
Content covers karnatka and goa. Plan to make it all india
proto.in showcase
Proto.in for dummies
Kiruba telling the rules
6 comapnies 6 minutes each
Each company present their busiess model
First up is lifemojo
Himanshu introduces his company with a story based inspiration on weight loss. Found value in nutrionist words. Problem was how to interact with doctors and patients remotely.
Time to deploy 2 months
From b2b expanded to b2c
Allows to set weight loss goal, track ur diet,track ur calories.
B2c monetization
Providre a platform where all nutrionists can come together
Also plans to sell fitness products . Mobile app is also there.
Kiruba telling the rules
6 comapnies 6 minutes each
Each company present their busiess model
First up is lifemojo
Himanshu introduces his company with a story based inspiration on weight loss. Found value in nutrionist words. Problem was how to interact with doctors and patients remotely.
Time to deploy 2 months
From b2b expanded to b2c
Allows to set weight loss goal, track ur diet,track ur calories.
B2c monetization
Providre a platform where all nutrionists can come together
Also plans to sell fitness products . Mobile app is also there.
proto.in more info
Atul chitnis continues with his 5 lessons learnt in his 20+ years of experiencing
Assumptions for todays world
Assume connectivity
Local storage no longer matters
Advertising dosent pay unless u are google or yahoo
Biggest sellers are mobile products
Don't build productd for vcs
Vc funding is not a viable business model unless u area vc :)
Assumptions for todays world
Assume connectivity
Local storage no longer matters
Advertising dosent pay unless u are google or yahoo
Biggest sellers are mobile products
Don't build productd for vcs
Vc funding is not a viable business model unless u area vc :)
Proto.in - Bangalore Edition
Registrations just completed.
Auditoriums are filled up.
All set for the event.
First up is The World is Changing by Atul Chitnis
Auditoriums are filled up.
All set for the event.
First up is The World is Changing by Atul Chitnis
Thursday, January 22, 2009
Following Proto.in
I will be attending proto.in @ Bangalore tomorrow and the day after . Will be updating live all the action straight from there :)
Tuesday, January 13, 2009
External Configuration With JBoss
Often we need to keep properties outside the war file / ear file.
Jboss has an interesting way of doing this. Check this out.
http://java.dzone.com/tips/external-configuration-with-jb
Jboss has an interesting way of doing this. Check this out.
http://java.dzone.com/tips/external-configuration-with-jb
Wednesday, February 21, 2007
Find an ASCII code
Often web developers , who use javascript for validations are not able to recollect ascii codes for keys from the top of their head.
http://www.whatasciicode.com/
This site lists the keys and corresponding ascii codes in tabular form. Whenver, you get stuck , just go ahead load the site and refer it at your will. Hope this helps
http://www.whatasciicode.com/
This site lists the keys and corresponding ascii codes in tabular form. Whenver, you get stuck , just go ahead load the site and refer it at your will. Hope this helps
Monday, February 5, 2007
Logwatcher plugin for eclipse
I found this plugin while surfing. This plugin is similar to "tail" command in Unix that helps to see the log file contents in real time if you give a -f switch.
You can get the plugin from : http://graysky.sourceforge.net/
Really useful plugin. Now I don't have to go to command line at all for watching log files.
You can get the plugin from : http://graysky.sourceforge.net/
Really useful plugin. Now I don't have to go to command line at all for watching log files.
Tuesday, January 30, 2007
Oracle Application Server Administration Made Easy
Opmnctl utility:
Opmnctl is a command line utility provided for starting, stopping,restarting and getting status of various ias components.
options available :
1) opmnctl start : Starts the opmn daemon without starting opmn managed instances
2) opmnctl startall : Starts both the daemon and managed server processes
3) opmnctl stopall : stops all the managed instances
4) To start a specific component
opmnctl startproc ias-component=OC4J process-type=
5) To stop a specific component
opmnctl stopproc ias-component=OC4J process-type=
6) To validate opmn.xml : opmnctl validate opmn.xml
7) To shutdown forcefully opmn managed processes and daemon :
opmnctl shutdown
All ias-components will have an entry in opmn.xml . This is located in $ORACLE_HOME/opmn/conf/opmn.xml
for a OC4J component entry will be like :
All ias-component specific logs are located in $ORACLE_HOME/oasmt/opmn/logs/ directory . If any component refuses to start or shuts down abnormally, go to that directory and have a look.
Deploying J2EE Application using OC4J in 10gAS
Step 1 : Create OC4J Component
a) cd $ORACLE_HOME/oasmt/dcm/bin
b) dcmctl createComponent -ct -co
Step 2: Deploy new component
a) FTP Ear file that you have created to the server .
b) dcmctl deployApplication - file -a -co
Step 3 : Start new component
a) dcmctl start -co -d -v
To restart component :
dcmctl restart -co -d -v
To stop component :
dcmctl stop -co -d -v
To undeploy component
dcmctl undeployApplication -a -co
To remove component
dcmctl removeComponent -co
Opmnctl is a command line utility provided for starting, stopping,restarting and getting status of various ias components.
options available :
1) opmnctl start : Starts the opmn daemon without starting opmn managed instances
2) opmnctl startall : Starts both the daemon and managed server processes
3) opmnctl stopall : stops all the managed instances
4) To start a specific component
opmnctl startproc ias-component=OC4J process-type=
5) To stop a specific component
opmnctl stopproc ias-component=OC4J process-type=
6) To validate opmn.xml : opmnctl validate opmn.xml
7) To shutdown forcefully opmn managed processes and daemon :
opmnctl shutdown
All ias-components will have an entry in opmn.xml . This is located in $ORACLE_HOME/opmn/conf/opmn.xml
for a OC4J component entry will be like :
ias-component id="OC4J"
process-type id="" module-id="OC4J"
module-data
category id="start-parameters"
data id="java-options" value=""
data id="oc4j-options" value=""
category
category id="stop-parameters"
data id="java-options" value=""
category
module-data
process-type
ias-component
All ias-component specific logs are located in $ORACLE_HOME/oasmt/opmn/logs/ directory . If any component refuses to start or shuts down abnormally, go to that directory and have a look.
Deploying J2EE Application using OC4J in 10gAS
Step 1 : Create OC4J Component
a) cd $ORACLE_HOME/oasmt/dcm/bin
b) dcmctl createComponent -ct
Step 2: Deploy new component
a) FTP Ear file that you have created to the server .
b) dcmctl deployApplication - file
Step 3 : Start new component
a) dcmctl start -co
To restart component :
dcmctl restart -co
To stop component :
dcmctl stop -co
To undeploy component
dcmctl undeployApplication -a
To remove component
dcmctl removeComponent -co
Wednesday, May 10, 2006
Back from Vacation
I am back from 1 week Vacation . Yesterday , When I was working on writing JDBC code, i found that returning auto generated keys is supported by JDBC 3.0 . So I went ahead and downloaded the latest ojdbc14.jar and deployed my war in tomcat. Worked without any issues. However, when i deployed the same in 10g AS it gave an abstract method error. Then , when I printed out the driver version property to my utter dismay i found that it was printing 9 and not 10 . After further investigations i found that you need to force 10g AS to use the new jdbc driver.
I went to Java Options for the oc4j instance and added the following as suggested by Oracle forums :
-Xbootclasspath/a:/0gAS home/jdbc/lib/ojdbc14.jar
Then after restarting the oc4j instance, it started working as expected. I am still left wondering though why it did not use the ojdbc14.jar that is in my web-inf/lib directory of the project. Any suggestions/comments are welcome
I went to Java Options for the oc4j instance and added the following as suggested by Oracle forums :
-Xbootclasspath/a:/0gAS home/jdbc/lib/ojdbc14.jar
Then after restarting the oc4j instance, it started working as expected. I am still left wondering though why it did not use the ojdbc14.jar that is in my web-inf/lib directory of the project. Any suggestions/comments are welcome
Friday, April 28, 2006
I have changed the look and feel of my blog, courtesy a nice template provided by Blogspot.
Learnings for Today
I was creating a map and using the key as a java.sql.Date object. I created a sql Date by the valueof builtin which accepts the yyyy-mm-dd format. When I tried to retrieve the value using the key, it failed some times. I was really surprised. It also stores the time along with the date in the object. When i try to get it , by using map.get the time is different, of course and it fails. So , i realised that it is not good to keep a date object as the key. Then i changed the code to an integer by appending yyyymmdd . Voila ! , now it works like a charm.
Rest of the day, i spent mostly on debugging jdbc code. There is a new stuff in JDBC 3.0 that allows you to return autogenerated keys. I downloaded the latest ojdbc14.jar , put it in my web-inf/lib in tomcat and it worked fine. However, when i deployed my EAR in 10g AS, for some reason it gives me an abstract method error in the preparedstatement class. I was breaking my head on that. Still to come up with a solution for that issue.
Hope to update my blog more frequently in future.
Learnings for Today
I was creating a map and using the key as a java.sql.Date object. I created a sql Date by the valueof builtin which accepts the yyyy-mm-dd format. When I tried to retrieve the value using the key, it failed some times. I was really surprised. It also stores the time along with the date in the object. When i try to get it , by using map.get the time is different, of course and it fails. So , i realised that it is not good to keep a date object as the key. Then i changed the code to an integer by appending yyyymmdd . Voila ! , now it works like a charm.
Rest of the day, i spent mostly on debugging jdbc code. There is a new stuff in JDBC 3.0 that allows you to return autogenerated keys. I downloaded the latest ojdbc14.jar , put it in my web-inf/lib in tomcat and it worked fine. However, when i deployed my EAR in 10g AS, for some reason it gives me an abstract method error in the preparedstatement class. I was breaking my head on that. Still to come up with a solution for that issue.
Hope to update my blog more frequently in future.
Tuesday, April 18, 2006
After a huge gap...
Started blogging after a huge gap. I created a presentation on "Introduction to AJAX " . Reply with your feedback on that .
Hope to blog regulary from now on
Thanks
Hope to blog regulary from now on
Thanks
Friday, October 7, 2005
Reports 10g New features
Here is an excellent article on Reports 10g R2 new features. I think it was presented in oracle open world . New features like SPREADSHEET format and HMTL inline tags look cool . Just check it out
username: cboracle
password: oraclec6
Presentation of new features
Document on New Features
Thanks ,
Venkat
username: cboracle
password: oraclec6
Presentation of new features
Document on New Features
Thanks ,
Venkat
Subscribe to:
Posts (Atom)