2015 JavaOne

Day 1

power of open source

  • discipline – experienced/bright developers and they dont sleep
  • freedom
  • Vosao CMS + GAE = free hosting




glassfish community

http://glassfish.java.net/  Arun Gupta/Reza ahman

  • # of downloads – 4.5 M from update center; 6.5 M installer/zip (doesn’t include maven artifacts)
  • more social – 3000 more twitter followers
  • date driven vs event driven release cycle (glassfish is more date driven)
  • glassfish 4.0 taking feature requests
  • JPA(persistence API)/JRS/Jigsaw
  • project avatar
  • how weblogic and glassfish compensate each other – shared library, same group of engineers
  • weblogic – HA is essential. same applies to glassfish


netbean platform

  • why netbeans – well accounting people prefer console apps
  • BL economy (accounting software) – jasper (doc generator) plugin for netbeans http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=2553
  • ORKA – sale gas and unconventional reservoir – adobe database with jpa
  • Agrosystem (agrosense) – agriculture/farm management – pluggable software, map(gxmap), offline operation
  • lynden FMS (cargo, freight management system) – universe bof database

everything you want to know about java

  • how can we run java on iOS – there is java API (code name one) on iOS – google has java converter to iOS code
  • how can we do write once and run anywhere on mobile
  • are JVM anguages competition to java or complementary
  • web socket and spdy
  • is jrocket dead
  • diagnose java performance issues – jClarity – measure dump analysis
  • why is there no common interface from numerical types
  • what is the best way to diagnose perm gen – via JDK 8 (there is no perm gen!!); best way is heap dump; two gc to then heap dump and look for things that shouldn’t be there (
  • success stories for the G1 collector
  • can java do multiple inheritance
  • real modularity in java
  • best java caching mechanism
  • java equivalent to link in .net
  • jrocket is dead –>hot rocket team in oracle
  • hotspot is not dead
  • java vs others – you need more than just 1 language but complimentary to each other
  • portlets is dead
  • why gosling left oracle?
  • where to submit bug for JRE – there will be a public bug tracker
  • Make java user friendly
    Naming of API
    Second pair of eyes to review
  • Link4j
  • Best way to do soap is to use restapi
  • (Jsr)
  • Best caching -JSR; don’t use caching because of gc. Or to serialize to memcache
  • Integrate spring with cdi
  • Queue solution? Java unsafe tool for concurrent coding


Java Strategy Keynotes

  • key to success 


    • Developer productivity
    • Open and transparent evolution
    • Community involvement
  • 3 key factors 
    • Leadership
    • Innovation
    • Community
  • roadmap – openjdk, jcp, jugs (java user group) 


    • Javafx will be open source
    • Javafx to replace swing and financial stats app
    • Nosql in oracle already
    • Nosql is not standardized yet
  • AMD SVP -HSA heterogeneous system architecture to coincide with Java User Group 


    • Magical vs natural progression
    • Java card
  • Nike – Nike fuel band



######################### side notes ####################################


http://java.net/projects/websocket-spec/ (API for web socket)

start using web socket


http://en.wikipedia.org/wiki/Multitenancy (cloud)

Learn how to use the Java instrumentation API to instrument your application and its external libraries to monitor transactions and visualize trends in your application. This tutorial starts by introducing transaction monitoring and ends with a complete, running transaction monitoring system. You learn every step along the way: instrument Java code in a running Java server, log SQL queries as the database sees them, visualize high-volume servlet performance as your users experience it, and expose statistics with JMX. The tutorial shows you how these techniques enable you to not just detect but also but predict outages on large-scale systems.

Day 2

teaching java programming to next generation

engaging enterprise (CTO of webphere Jerry Cuomo)

  • a story teller
  • motivation, design
  • Jerry’s technology trends (blog and facebook page – user community) – living document
  • GPS, social, business promos, analytics, mobile, bigdata
  • amazon is a perfect example to leverage the power of the web
  • data – public data records, rate comparison, company#123 data, analytics sensors on all devices to provide real time data
  • engaging enterprse dsign – extend (externalizing and sync), transact with security and scale, optimize with insights
  • extend – core services, APIs (paypal, bestbuy, more users use API then websites), APPs that use your API (mobile app, small app like paceMaker, java Card)
  • transact – (seuciryt, contorl, scale, resilience, accounting) – insights and actions
  • web API service – create/document/assemble/moble API on demand (using ACME airline as an example ) with IBM worklight implementation
  • transact – security, pattern
  • IBM bigdata
  • analytics – platform of client apps, geographic source of client app usage

Tooling Support for Enterprise Development (Reza Rahman’s session)

Delivering Performance and Reliability at the World’s Leading Futures Exchange – Rene Perrin – Technical Specialist Software Engineer, CME Group

  • CME group – found designated contract markets (DCMs) – CME/CBOT, NYMEX, COMEX – http://cmegroup.com
  • electronic trading on globex – CME Globex first and remains fastest trading app on earth
  • overview
    • order entry bus – falcon gageway component —>match server –>market data componet –>market data bus
    • admin server, JMS
  • app behavior – match incoming order against any resting orders –
  • CLZ2 http://www.barchart.com/quotes/futures/CLZ2
  • CL: C1 HO-CLZ2
  • buy/sell HOZ
  • cme do implied trading and implied matching
  • scalability and capacity problems – customers cannot be segregated in different columns – ordering is important. allocation algo such as FIFO
  • conclusion – tranditional scaling solutions to address problem cannot be applied
  • high level comparison – monthly order volumes vs RTT (round trip time)
  • performance – measurement: order volumes vs round trip time
  • performance – constantly measures performance, every week, the 6 busiest minutes for each market is identified to used as baseline (window doesn’t want to be too long; uptime is 24×7, shutdown on the weekend; just enough interval for repetivie tests)
  • performance – orders MAY have cascading effects – such cascading side effects must be processed before handling the next incoming order – measuring order queuing and latency
  • benchmarking
    • 0-1 ms: good
    • 1-5 ms: ok
    • 5-30 ms: slow
    • more than 30: very slow – 41ms = time of a standard (24fps) video frame
  • HRI – how and when to measure performance – HRI (history replay injector)
    • used to replay all orders received during 6 minutes, established weekly
    • multiple HRIs are run in each production environment on Saturdays to validate that the weekly maintenance (config changes, hw/sw updates) have no negative impacts on performance
      • HRI – homegrown
      • all tradings engines are brought down on Friday nights after US markets close
      • weekly maintenace is applilied after the markets are closed
      • saturdays are dedicated to testing the production environment steup for the upcoming week
      • testing in production – has to be very good at cleaning up afterwards
  • Performance analysis
    • data collector
    • measuring key/critical processing steps
    • metrics collector run within memory
    • collecting metrics and tracers
    • metric data – counter
    • tracer data – hexcode
  • performance analysis – falcon dashboard
    • tracer info is captured from logs and stored in a mango database for query purposes
    • source – production logs –
    • build server logs – change log
    • filter – order types
    • with cumulative distribution
    • performance varies on different OS
    • technology – mongoDB, Scala
    • automated performance tests in build server
  • reliability measures
  • functional correctness, software resiliency and fault tolerance
  • what’s done – testing
  • real world – testing with real data
  • HRI is the answer
    • cons – can be difficult to reproduce; in case of message format changes, some adapters may be needed to normalize data
    • Pros – high volume. real orders
  • testing in production – Prod Parallel testing
  • roll in rollout – saturday test run in production – after all due diligence tests have been run, running several history replays, running in prod-parallel.
  • time for a dress rehearsal
  • fault torelance – fault torelance synchronization (primary engine – backup engine)
  • tips
    • simple coding
    • hashmap
    • no full GC during the week – no custom core – tuning, tuning and tuning
    • barely any multi-threading

Clojure/ClojureScript: One Language to Rule the Web Stuart Sierra – Developer, Relevance, Inc.

  • efficient way to distribute apps
  • immutable data structures – list/vector/map/set
  • data manipulation – expressive language
  • make up the gap of javascript – multi-arity functions (function that takes different form of argument or none at all)
  • namespaces – ns (javascript doesn’t have namespace concept)
  • designed for concurrency – time and state
  • google closure compiler
  • share code – code without host interop just works/lein-cljsbuild has “crossovers”, feature expressions coming to clojure

JSR 347 Data Grids, and NoSQL Manik Surtani – Open Source Hacker, Red Hat Ltd.

  • http://jcp.org/en/jsr/detail?id=107 – temporary caching API
  • http://jcp.org/en/jsr/detail?id=347 – data grids for java platform
  • data grids – distributed caches – clustered by nature
  • http://www.infoq.com/interviews/JSR347-Manik-Surtani (JSR 107, JSR 347, Infinispan, NoSQL, Hot Rod, Memcached, CDI and Beyond)
  • infinispan – in-memory data grid; open used as a performance boost for database, used as a nosql key/value store
  • standards – JSR-107/347
  • nosql overlaps with data grids
  • why relational database – disk space expensive, slow network speed, Codd’s normal forms ruled the earth. http://en.wikipedia.org/wiki/Boyce%E2%80%93Codd_normal_form
  • not anymore – cheap storage/memory;high available/scalability are important/cloud; relational model never sat well with OOP anyway
  • nosql comes in – flexible(soft) schema – often de-mormalized
  • overlaps
  • Data Grids – primarily accessed in – VM, optimized for fast, mainly store data in memory, optonally writing through to disk (casandra?!)
  • NoSql – primarily accessed remotely over a socket, optmized for very large volume, maily store data on disk, and optionally caching in memory
  • BoF – NoSql engine – evenutal consistency, async API, returns futures, control co-location
  • JSON is used to standardize API cross difference provided by different vendors which still have proprietary API
  • JPQL is the answer


  • NoSQL and Polyglot Persistence
  • Java Persistence with NoSQL and SQL
  • JavaFX a platform to present data http://docs.oracle.com/javafx/2/overview/jfxpub-overview.htm
  • TUT5173 – Transaction Monitoring with the Instrumentation API – http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/Instrumentation.html
  • JCP – java community press
  • http://nosql-database.org/

Day 3

MongoDB and Java: Big Data Made Easy – antoine girbal – Solutions Architect, 10gen

  • mongo db is a nosql database.
  • big data – masses pushing data
  • volume – big/difficult/exterme volume is relative – 100GBs or 100 PB
  • volume – causes an organization to consider DB tech
  • variety of data – not easy to comform to a single schema, schema is out of control, whose schema might potentially be unknown at design time
  • data store and analytics – RDBMS, RDBMS helper (memcache, app layer), new gen OLAP and then non-relational operational stores (NoSQLL)
  • NoSql – non-relational, operational datastores and dbs, focus on scalability, ease of modeling and changing data and no sql syntax
  • NoSql – no joins and no complext transactions – horizotally scalable arch
  • NoSql  key-value stores/big table dscendants(distributed multi-dimenson map, data sored in a column oriented fashion; predominantly hash based indexing), document oriented stores (stored as JSON or XML)
  • JSON style documents, light/firendly XML and represented as BSON (http://bsonspec.org/ – binary json) – no buffer, no parsing is necessary
  • terminology database–>database, table->collection, row–>document
  • flexible schemas – potentially all documents (row) in the same collection (table)
  • craiglist use mongo db for catalog system
  • embedded documents – little need for joins and YOU CAN STORE A LIST.
  • Mongo DB key features – data stored as docs, schema scree, CRUB (create read update delete), atomic document operations, ad hoc queries like SQL (equality, regular expression, ranges, geospatial), secondary indexes, sharding (sometimes caled partitioning) for scalability, replication – HA and read scalability
  • java driver is open source, available on github, mongon.jar is the one, bson.jar is a subset with BSON lib only; java driver is currently the most used, receives active dev by 10gen and the community
  • driver features, CRUD, support for replica sets, connection pooling, BSON/JSON, GridFS (ability to store files in mongoDB)
  • operation – first obtain a mong, db, and collection instnace; many settings stored within each object. settings are inherited from parent object
  • comparison (photo)
  • BSON object – document is represented by basicDBObject class. basically a linke hashmap; a BasicDBObject can be built manually or using a BasicDBObjectBuilder
  • safe writes – turned on by specifying a writeConcern at Mongo, DB, Collection or query level – by default writes are fire-and-forget and may not detect certain errors
  • querying – use find() to query for docs and it creates a cursor, use limit() to limit the number of docs returned
  • other operations – count, update, remove and arbitrary command
  • indexing
  • replica sets – 1 primary + n secondary; only primary write to DRIVER
  • sharding – MongoS process (shard key); sharding is defined per collection
  • Morphia – maps plain java objects, annotations
  • the ORMs – spring data, hibernate OGM project
  • conclusion – mogonDB is document-orented, java support is strong, additional tools like ORMs exist to simplify the use of MongoDB and maintain the langugage strengths
  • Q/A: synchronize (no reconciding data is done; write will be lost temporarily if primary is down)


Deep Dive into Java Performance analysis with advanced toolsets (intel)

  1. motivation – growing complications, multi-core, CPU ecache, new arch and instruction sets, expansion of new SW models, cloud arch, virtualization and app complexity growth
  2. typical tasks: java stack, java heap, synchromization, hotspots (jstack, jmap, profilers)
  3. advanced tasks: java/nactive heap and stack, SW based profiling, hw based profiling, advanced analysis techniquies (intel vtune amlifier XE, oracle solaris performance analyzer)
  4. Intel Vtune amplifier XE
  • part of VTune studio
  • two data collection types – hardware event-based sampling and user-mode sampling and tracking (time based, takes snapshots with some time interval to identify hopspots with stats call graphs)
  1. time-based vs event-based analysis – compared hotspots vs lw hotspots
  • very much like dynaTrace


JVM JIT for Dummies – Charles Nutter – JRuby Guy, Red Hat


 Forge New Ground in Rapid Enterprise Software Development: Paul Bakker,  Lincoln Baxter III – Senior Software Engineer, Red Hat
  • jboss forge
  • jboss tool
  • new project, maven (pom.xml) and then scaffold
  • use persistence plugin –> JPA
  • use forge command console



############################additional notes ###############################

Day 4

Java Paas – the engine to drive mobile to enterprise applications – CloudBees/Harpreet Singh and Mark Prichard

  • background jenkins, bea, jboss and continuous integration and agile
  • goal – to get the market faster
  • what deployment should be – build –(continuous deployment)–>Run
  • PaaS is perfect tor that
  • traditional software stack – install monitor patch upgrade and validate stack
  • three layers of cloud – IaaS (amazon,terremark, ecualyptus systems)
  • PaaS – cloudbees, heroku, vmForce, database.com
  • SaaS
  • four steps – platform –> stack –> app –> upgrade
  • Paas: reference architecture – runing services(auto scaling, HA, monitoring)/middleware services(app server, DBMS/nosql, logging, messaging, mail), core platform services (provisioning, SLA, monitoring, metering, billing) and IaaS and virtualization/OS below
  • Jenkins – community-driven OSS project (open source software) – market share (33% jenkins, 30% maven)
  • ALM (application lifecycle management) in the cloud
  • cloudbees http://www.cloudbees.com/pricing-standard-services.cb
  • Jenkins, Cloud and Mobile – why jenkins in cloud for mobile CI
  • iOS mobile app (build/test using jenkins, MacOS slaves for builds, testFlight push to beta testers)
  • built using eclipse, maven, junit, jax-rs, jax-B, gson
  • jenkins – iOs packaging/distribution, cloudbees (repository), iOs development (xcode), eclipse (services development), jUnit, SOASTA (integration/functional testing)
  • Considerations for choosing a Java PaaS
  • so essential jenkins running in the cloud https://partnerdemo.ci.cloudbees.com/
  • PaaS Criteria
  • use case? existing/greenfield development app, limited users or web-scale, simplicity or fexibility, ALM (dev, test or production), private cloud or public cloud
  • what friction points does it eliminate, architecting solutions in a new way?
  • evaluation: application stack –  java/php/python/ruby, if java, which jvm languages (scala, groovy)
  • answer to “custom” stack –> cloudbees clickstacks

Oracle and .NET: Best practices for performance and deployment

  • optmization process: .NET data access tuning (ODP.NET best practices)–>SQL tuning (use SQL tuning advisor in visual studio), database tuning under real world conditions (oracle performance analyzer in visual studio detects issues)
  • ODP.NET – close/dispose connections (and all objects)
  • ODP.NET performance counters (version or higher) – monitor with windows performance monitor
  • connection management – clusters and standbys – RAC automatic connection load balancing (Load Balancing=true), RAC and data gurad automatic “bad” connection removal (HA Events=true)
  • optimizing ODP.NET performance – connections, data retreivel and updates, ODPnet data types and caching
  • commands – statement caching (retains previously parsed statement in shared pool, cursor stays open on the client side for faster re-use, no additional lookup needed on server; metadata remains on the client/caches most recently used statements – works with SQl and PL/SQL statements
  • commands – data retrieval: control how much data is retrieved per DB roundtrip, (too much data: excessive client-side app, too little data – additional round trip) – set rowSize properly
  • commands – statement batching – use OracleDataAdapter.UpdateBatchSize to batch updates from DataSet. Execute multiple commands in on DB roundtrip (use anonymous PL/SQL block)
  • commands – mass data movement with arrays (PL?SQL associative arrays, uuse parameter arrybinding)
  • promotable transactions
  • ODP.NET data types – avoid unnecessary data type conversions: .net vs ODP.net types; option to store oracle data types in dataset (available in ADO.NET 2.0)
  • REF cursors – retrieve data as needed, defers result set retrieval until needed, pass REF cursors back as input stored proc, OracleRefCursor class
  • Oracle .NET caching solutions, client result cache, CQN (continuous query notification), Times Ten in-memory database;
  • optimizing performance from visual studio, sql tuning advisor and oracle performance analyzer
  • managing multiple oracle homes in .net – solution for 10.2 and later, DLL search order
  • SQL tuing advisor (32bit only?) http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/TuningNETAdvisor/TuningNETAdvisor.htm


BPM and Analytics: Process Dashboards, BAM, and Intelligent Optimization

  • BPM analytics value proposition – en-to-end process visibility, current KPI status, spot common problems/bottleneckts, ynamacially adapt business process base on current conditions/trends, real time alerts trigger corrective action
  • BPM analytics stakehodlers, process owner, analysits, process developer an executives
  • usage patterns – order to cash, more efficient workand document routing
  • BPM analytics, metrics and reporting–>monitor and analyze–>optimization (tech dashboard evolution)
  • key features – KPI monitoring, health montiroing, simulation, real time alerts/action, next-best action recommdnation, pattern detection and geo fecning, process intelligence(PI), data discovery and social analytics
  • operational monitoring –> actional insights –> process optimization –> process intelligence
  • actionable business insights – monitor business activity, manage by exceptions, perform dimensional analysis, monitor business KPIs –>moniotr/analyze/act
  • Oracle BAM (Oracle Business Activity Monitoring)
  • process optmization – build simulation scnerios, identify causes for bottlenecks
  • BAM 12c feature highlights
  • leverage OEP engine as the process engine
  • Tight integration with OBIEE (Oracle Business Intelligence Enterprise Edition)
  • enhanced real-time alerting and action framework
  • ready process monitoring profile for BPM/SOA (automated KPI creation?!)
  • OPSS – Oracle Platform Security Services security (http://www.oracle.com/technetwork/middleware/id-mgmt/index-100381.html)
  • KPI risk assessment
    • outcome metrics (lagging)
    • driver metrics (leaing) – in a customer service scenario, call waiting time is an outcome metric, Call volume affects its riskiness
    • KPI watch list
    • metrics harvest


Advanced Enterprise Architectures Using Open Source Heath Kesler – SOA Architect, Savoir Technologies

  • Evangelist, SOA architect, application fire fighter
  • no problem cannot be solved by open source. you can debug and modify it. hidden gems
  • apache, apache camel, apache activemq,..,etc
  • OSGi- http://www.osgi.org/Main/HomePage  karaf http://karaf.apache.org/
  • ESB (enterprise service bus)
  • activemq messaging options – non-shared/pure (master/slave – 2 different persistence store) – problem in-flight messages, data persistence, data integrity.
  • activemq messaging options – shared file system/JDBC – master/slave/shared persistence – watch out for the “journal file”
  • activemq scaling – network of brokers – meshed network 2 pairs of master/slave – duplex
  • activemq persistence adapter (kahaDB)
  • CXF – proxy – an apache camel compoent http://cxf.apache.org/
  • exception handling is important – the solution might not funtion as you expect
  • loC – spring and bluespring (can be deployed in same environment with OSGi)
  • ESB – layer under which you can implement routing and integration (in opensource Karaf and Servicemix)
  • clustering – proxy cluster (servicemix node1/2) logic cluster (smx node3/4/5)


Leverage Enterprise Integration Patterns with Apache Camel and Twitter (Bruno Borges)

  • enterprise integration patterns
  • apache camel: components, endpoints, routes, exchanges and messages, consumers, producers and processors
  • camel components – jms, http, mina, jdbc, ftp, webservices, ejb, jpa, hibernate, IRC, JRC, AS/400, LDAP, Mail, Nagios, POP, Printers, Quartz, restlet, RMI, RSS, scalate, XMPP
  • Camel integrates with CDI – camelcontext can be started with EJB3’s @startup and @singleton
  • twitter – Social media metrics (reading and processing all that data) –
  • social data, it’s not info overload. its a filter failure.
  • camel twitter and then camel social (uri format social://)
  • camel twitter implementation http://ec2-23-22-228-12.compute-1.amazonaws.com:8080/
  • twitter feed into camel stream video through web socket (real time pulling, too many porn on twitter orz)
  • demo
  • connects to search streaming channel
  • convert POJO to JSON (marshal)
  • coherence
  • camel vs spring (camel wins out because it’s been here for years)




Day 5


Building WebSocket Applications with GlassFish and Grizzly Stephen Millidge – Director, C2B2 CONSULTING LIMITED
  • agenda – intro to web sockets and push, websockets in glassflish (basic echo server, pushing stock prices to the browser), intro to data grids, code walkthrough (hooking up to a data grid)
  • typical http problem ( request-response protocol, it’s half-duplex, stateless – lots of redundant data, new connection required for each transaction)
  • push to browser
  • simaluted push – polling: regular requests at a set internal, near real-time, server events may occuur between requests
  • simulated push – long polling : connection is kept open, response is blocked until event happens
  • HTTP streaming – long lived http connection, or XMLHttpRequest connection, browser needs to close and reconnect the streaming channel to release memory (expensive as well)
  • Reverse AJAX/Comet (poor scalability), utlizes long polling or http streaming techniques, complex development
  • Web Sockets is the answer – html5, enables full duplex, allows web servers to push updates to browsers
  • web sockets is not mature yet, rfc 6455, wc3 SSE http://dev.w3.org/html5/eventsource http://dev.w3.org/html5/websockets
    • benefits of web sockets – reduced latency, netowkr traffic, server side cpu/memory; simplified development, scalable
    • supports IE9, chrome, firefox
    • web socket protocol – based on http, connection header, chat/superchat (security)
    • web sockets RFC – on top of TCP
    • adds web origin based security model
    • adds an addressing and protocol naming o support multiple services on one port and multiple host names on one ip
    • layers a framing mechanism on top of tcp to get back to the ip packet machanism that tcp is built on but no length limit
    • JavaScript API – websocket(location,protocol), function onmessage, function onopen, function onclose, function onerror, close(), send(data)
  • WebSockets in GlassFish (3.1.2) – grizzly 1.9, JDK 1.6, NetBeans IDE 7.0.1
  • enable web socket support in glassfish
  • grizzly key classes – websocket engine (singleton), websocket app, websocketx3 – just three classes
  • App – very siimple echo server
  • echo classes, echo servlet
  • create a echo project -> create the echo servlet, create an echo application (java class)
  • echo application extends WebSocketApplication
  • WebSocketEngine – http://grizzly.java.net/nonav/docs/2.0/apidocs/org/glassfish/grizzly/websockets/WebSocketEngine.html
  • websockets with HTTPS: WSS http://en.wikipedia.org/wiki/WebSocket
  • small jsp app to connect, disconnect send – websocket app
  • ##################################################################
  • extend the push – echo.jsp – pushSocket/echoServlet
  • new class PushSocket extends DefaultWebSocket
  • Data Grids – real time push at scale
  • JCache standard api for caches (JSR 107 coming in JEE7) – in memory caching
  • HA cache partitioning
  • Grid events sbusystem (cache listener)
  • coherence event listeners – classes MapEvent, ,MapListener, each time change takes place, raised to MapEvent
  • JSR 107 API
  • stock ticker architecture  – glassfish (cache), StockTicker App push change in the Cache
  • best practices -> load balancer–> J2E cluster–> data grid cache (oracle coherence in demo, infinispan, solutions)
  • Stock icker Classes – stock socket, application, servlet, ticker, stock –> websocket
  • stock – pojo
  • stock ticker – class
  • stock servlet
  • stock application – createwebsock, call stock, push to websocket
  • stock socket – cache, connect to mapListender, sendUpdate to MapEvent, change to JSON object to send it to websocket
  • real time dashboard = html5+websocket+grizzly+data grid run on glassfish
  • summary – reduced latency, network traffic and cpu/memory on server, highly scalable, when linked to a data grid, provie enterprise scale, event driven, real time push
How to Connect Java Embedded to Cloud Computing Hinkmond Wong – Consulting Member of Technical Staff, Oracle
  • Cloud computing – use of computing resources (hw, sw, peripherals) that are deliverd as a service over a network
  • Software as a service – gmail
  • PaaS –
  • Storage as a service
  • cloud compueting for embedded devices – use of mbedded device resources that are delivered as a service over netowrk, embedded device services (becomes a mini-server) – device as a service, concentrator (collection of devices) as a Service
  • ARM as concentrator http://en.wikipedia.org/wiki/ARM_architecture
  • typical cloud computing, one control and entry point, no need to install software on each client, workload shifted to network of computers
  • pro – easier to install, easier to manage and access
  • con – dependent on network, data on network systems, crash leads to serious impact
  • embedded cloud computing – one contorl (concentrator device, no need to install software on each client, workload shifted to network of devices
  • pro – same as typical “big” cloud computing
  • con – same as typical “big” cloud computing
  • spectrum of java (picture below)
  • Java SE Embedded – small footprint, larget commercial/industrial, full java 1.6 API, fixed location assets
  • Java ME embedded – smaller footprint, mobile devices, install base in the billions, dominates the feature phone market
  • Java Card – smallest footprint, M2M networks, install base nearing 10 billion, cyber-physical systems
  • intro to Java Embedded
  • java SE – fully implements Java SE spects, significant memory optimizations, smaller persistent (ROM/disk) and volatile (RAM), runtime optimizations
  • what features are needed enabling cloud computing on devices
  • ports avaiable for typical embedded cpus (arm, mips, powerpc)
  • support for “small” profiles – 10mb static footprint headless, 16mb dynamic footprint headless
  • will not inlcude many VM feautres – only include serial GC, only include C1 client JIT
  • will also support a large full featured config
  • techniques to connect with cloud –
  • device as the client
  • device as the cloud service – devices are the producers of cloud services, need more advanced web service framework (servlets, XML formating, database, web service framework), ofeers data to the cloud
  • developing for cloud computing – embedded devices, sammler memory and lower powered CPUs, wirelessly networked, headless or small screens, limited input (touchscreen or keypad)
  • developing for cloud computing – provision a serviice (as glassfish WAR bundles), provide subscription model (jersey web service), add/authenticate users and enable content (Java DB), operate monitor, configure, upgrade and diagnose (glassfish), flexible deployment (WAR bundles)
  • big data – JavaDB can be used as local storage and analytics instead of transmitting it out over wireless immediately
  • typical deployment – concentrator (JES 7.0), Java DB as database storage, device running java
  • jersey web service as the web interface – convience way to present as a RESTful web services
  • Grizzly implement
  • http://beagleboard.org/ – good for prototype
  • use netbeans as IDE
Powerful Analytics Apps Fueled by Java for High Performance and Scalability – Amit Rustagi – Principal Architect, eBay
  • # of users
  • # of servers and db instances
  • tech – oracle, hadoop
  • analytics 101 – data storage(structured/unstructed, data processing(mapredue framework), data access, management (workflow, suport, co-ordination) and BI (data mining, reporting, analytics)
  • analytics 101 – acquire, organize (data processing), anayze (access and manaement), decide (BI)
  • missing layer?!
  • tracking – track the path of user entering into ebay through different channel (affiliates, direct traffic, marketing emails, site emails, portals, social media, paid search, nature search) – marketing emails are sent by ebay, site emails
  • experimentation –
  • users go to the site,
  • experimentation platform(EP) identifies the user,
  • EP determines what treatment should be served based on user profile and experiments that are live in the EP system (persistent cookie)
  • applications serve the correct experience to the user based on the treatment selected by EP.
  • user experience is logged for analysis
  • personalization – share and leverage combined personalization data – ebay does see an opportunity to provide more custom info to customers through rea-time personalization by using dynamic site and apps to delivery targted content. Personalization filters out the noise consumers, helping them avoid info overload. highly targeted info!!
  • challenges – capturing the most important data as it happens (real-time), scalability, performance, cost effectiveness
  • data capture challenges – real-time data capture, collecting and quality data, accelerating the availability of data to consumers
  • performance challenges – consistent SLAs, redundant processing, when to process
  • solution
  • holistic view of the system
  • best practices – sometimes it’s appropriate to have exactly one instance of a class (singleton pattern) – typically those types of objects are accessed by disparate objects throughout a software system and therefore require a global point of access
  • best practices – decouple sender and receiver of a request by interposing a chain of objects between them
  • best practices – command design pattern. substitute a proxy for an object. letting app framework make requests of app-specific objects, without the framework knowing the objects
  • best practices – reduce the number of objects your apps create, which decreases your app’s memory footprint and increases performance –) simplify complex APIs by providing a simplified interface to a complex subsystem (FACADE)
  • things to consider:
    • breaking down the system into components
    • isolate those that could occur async
    • web services decomposition
    • evaluate the services for local and remote binding
    • always pool valuable system resources like threads, db connections and socket connections
    • optimize your I/O ops (caching) by using buffering when writing to and reading from files and/or streams
    • minimize network overheads by retrieving several related items simultaneously in one remote invocation if possible
    • evaluate single threaded and multi threaded before decide (misconception – multi thread runs faster?!)
    • serialization/deserialization
    • CPU profiling
    • memory profiling http://www.quest.com/jprobe/
  • local java binding sampel – request handler (info context exchange)–>request/response adapter <–>service with local java binding
  • ebay uses CI – continuous builds (jenkins)
################### additional notes ############################
  1. http://en.wikipedia.org/wiki/JavaServer_Faces
  2. oracle coherence http://en.wikipedia.org/wiki/Oracle_Coherence
  3. http://en.wikipedia.org/wiki/ARM_architecture
  4. http://en.wikipedia.org/wiki/List_of_JVM_languages
  5. http://openjdk.java.net/projects/lambda/
  6. http://www.raspberrypi.org/
  7. http://beagleboard.org/

















Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create a free website or blog at WordPress.com.

Up ↑

%d bloggers like this: