SlideShare a Scribd company logo
Experiences with Evangelizing Java Within
the Database
About
●
About me
– CTO at Scotas.com
– Founder of the ArOUG
– ACE Member since 2006
– Open Source Developer (DBPrism/ DBPrism CMS, LDI, ...)
– Oracle developer since 1999
●
About Scotas
– A company specialized in free text search, synchronization
and Oracle
– OLS, Native Solr integration
– External Solr/ ElasticSearch integration
www.scotas.com
www.scotas.com
Agenda
– Database resident JVM
– History of the JVM implementation
– Evangelizing about Database resident JVM
●
Experience during
– Developing
– Testing
– Deploying
●
Examples
– Conclusion
Database resident JVM time-line
●
8i (1999, JDK1.2, JSP, ORB, NCOMP)
●
9i (2001, JDK 1.3, NCOMP)
●
10g (2003 R1, 2005 R2, JDK 1.4, NCOMP)
●
11g (2007, JDK 1.5, JIT)
●
12c (2013, JDK 1.6/1.7/.., JIT)
www.scotas.com
Database resident JVM architecture
www.scotas.com
Components
Sun’s JDK versus Database resident JVM
Sun’s JDK VM
●
Thread Based
●
Sharing across Threads
●
Limited Scalability
●
Classes in file system
●
Resolve classes with
“Classpath”
●
JIT
●
Preemptive multi-threading
●
Limited Robustness (process
failure)
Database resident JVM
●
Database Session Model
●
Session Isolation
●
Unlimited Scalability
●
Classes in database
●
Resolve classes with
“Resolver Spec”
●
JIT (11g and up)
●
Non-Preemptive multi-
threading
●
Does not crash as a whole
www.scotas.com
Oracle’s Commitment to OJVM
●
Used by a growing number of database customers acording
to Oracle
●
Used by Oracle Components
– InterMedia
– Spatial
– Text
– XQuery (XMLDB)
– WareHouse Builder
– CDC (Change Data Capture)
– ODM (Oracle Data Mining analytics functions)
●
12c Enhancements
www.scotas.com
●
Many among Fortune 500 companies
●
Some examples from
“Java in the Oracle Database @ Work – Customer Case Studies”
●
And for sure Scotas & Cima
Who is Using OJVM
www.scotas.com
Java in the Database: What For
www.scotas.com
●
Trigger-based Notification System
using RMI
●
Secure Credit-Card Processing using
JSSE
●
Custom Alert applications that
monitor business data
●
Sending emails with attachment
from within the database
●
Produce PDF files from Result Set
●
Execute external OS commands and
external procedures
●
Implement Md5 CRC
●
Publish Repository Content to Portal
●
Portable Logistic Applications
●
Implement Parsers for various File
Formats (txt, zip, xml, binary)
●
Implement Image Transformation
and Format Conversion (GIF, PNG,
JPEG, etc)
●
Implement Database-resident
Content Management System
●
HTTP Call-Out
●
JDBC Call-Out
●
RMI Call-Out to SAP
●
Web Services Call-Out
●
Messaging across Tiers
●
RESTful Database Web Services
●
Near Real Time Full Text Search
Evangelizing Java Within the Database
www.scotas.com
Experiences in:
Experiences during development
●
Basically any Java IDE works, but
●
JDeveloper is better:
– Database integration
●
Database navigator
●
Database reports
●
Find objects
●
DBMS_OUTPUT
– Database resident Java Class browser
– Remote debugger
●
Use $ORACLE_HOME/jdk for compilling
●
Use library dependencies $ORACLE_HOME:
– javavm/lib/ (database resident JVM implemenetation Aurora)
– rdbms/jlib/ (database resident APIs such as ODCI, XDB, Servlet)
– jdk/lib/ (properly JDK specific libs)
– lib/ (Oracle functionalities such as XML Parser)
– jdbc/lib (Oracle JDBC implementation)
●
If you have problem with target JDK, Retro-translator is your friend
www.scotas.com
Experiences during testing
●
There is no visual feedback (Java headless)
●
Code could be tested in an external JVM encapsulating your
JDBC connection funtionality
●
Use a logging framework
– Java Util Logging works (JUL)
– Apache Log4J works (more funtionality)
– Usually logging information goes to .trc files
●
Use JDeveloper for remote debugging (dbms_debug_jdwp)
●
Incorporate JUnit integration
– Class loader issues
– Security concerns
www.scotas.com
Experiences during deployment
●
Incorporate Ant or Maven
– One sentence deployment
– DBA likes scripts for installing
– Imagine you are deploying your apps in a Datacenter
using ssh
●
Use NCOMP with DB version < 11g
●
Important!!! name your libraries with version numbers
major.minor.patch
●
Allways incorporate version control (SVN, CVS, GIT)
●
Write many test suites
●
Size your Database resident memory areas properly
www.scotas.com
Examples – DBPrism CMS
●
At the time of PSP (formerly HTMLDB, WebDB, Apex..)
●
Using DBPrism connector example for the Book
Profesional XML Databases
●
Develop as an example for the Book
Oracle Database Programming using Java and Web Services
●
Presented at Second Open Source Content Management
Conference , Berkeley, CA
●
A CMS working as Java Stored Procedures
●
Using Apache Cocoon as presentation framework
●
Using Struts's controller idea, view (XQuery pages),
Controller (Java Stored Procedures)
●
Exploring many XMLDB functionalities (XQuery, XSL,
Oracle Text, ...)
www.scotas.com
Examples – RESTFul Web Services
●
An Extension to restlet.org project
●
A Java Servlet Connector for XMLDB
●
Incorporated to the code base of OSS Project
●
Allows user to write RESTFul Web Services in Java
●
Connection are accepted directly by Oracle Listener
●
Many connections spawn several parallel shared servers
●
Java reflection was used to avoid static dependency to
propietary API
●
Main problem found was Servlet 2.2 API support into XMLDB,
still the same in 12c
●
Allows remote debugging of RESTFul implementation (
dbms_debug_jdwp)
www.scotas.com
Examples - Scotas OLS
www.scotas.com
●
An Embedded version of Solr Framework running inside Oracle JVM
●
42 new Java Classes and several new PLSQL Object Types
●
Four new SQL operators scontains(), sscore(), smlt(), shighlight()
and poweful text analysis functionalities
●
An orthogonal/up-to-date Solr solution for any programming
language, especially Java, Ruby, Python, PHP and .Net, currently
latest production version – 4.0.0.
●
Available to any Oracle product such as BI, Apex, ODM
create index esl_events_sidx on esl_events(message) indextype is Lucene.SolrIndex
parameters('SyncMode:Deferred;MltColumn:text;HighlightColumn:title;DefaultColumn:text;Co
mmitOnSync:true;ExtraTabs:ESL.esl_causes
c;WhereCondition:L$MT.event_id=c.event_id(+);ExtraCols:.....') local parallel 2;
create index esl_events_sidx on esl_events(message) indextype is Lucene.SolrIndex
parameters('SyncMode:Deferred;MltColumn:text;HighlightColumn:title;DefaultColumn:text;Co
mmitOnSync:true;ExtraTabs:ESL.esl_causes
c;WhereCondition:L$MT.event_id=c.event_id(+);ExtraCols:.....') local parallel 2;
select /*+ DOMAIN_INDEX_SORT */ sscore(1),shighlight(1),message from esl_events
where scontains(message,'severity_s:(ERROR INFO) AND springframework',1)>0 and
gen_day between 26 and 27;
select /*+ DOMAIN_INDEX_SORT */ sscore(1),shighlight(1),message from esl_events
where scontains(message,'severity_s:(ERROR INFO) AND springframework',1)>0 and
gen_day between 26 and 27;
Conclusions
●
Open Source projects
– Release early, release often (to attract contributors, see Hadoop
version 0.20)
– Due to Oracle License limitation we can not incorporate OSS code in
main branch, Examples DBPrism Adapter, Restlet Adapter)
– Loading OSS libraries into the RDBMS is not well views by DBAs
●
Corporate projects
– Impedance mistmatch
●
DBA don't have Java skills
●
Java Developers don't have DBA skills
●
PLSQL Developer don't have OO skills
– Architects don't really know database resident potentiality
– Same challenges are now by incorporating Hadoop in Oracle projects
www.scotas.com
Answers!
www.scotas.com | info@scotas.com | +1 (650) 704-7915 | 440 North Wolfe Road, Sunnyvale, CA 94085
Thank
You!
www.scotas.com | info@scotas.com | +1 (650) 704-7915 | 440 North Wolfe Road, Sunnyvale, CA 94085

More Related Content

PPTX
Level DB - Quick Cheat Sheet
PDF
Blackray @ SAPO CodeBits 2009
PPTX
PostgreSQL as an Alternative to MSSQL
ODP
PDF
BlackRay - The open Source Data Engine
PDF
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
PDF
What's New In PostgreSQL 9.4
PPT
File System On Steroids
Level DB - Quick Cheat Sheet
Blackray @ SAPO CodeBits 2009
PostgreSQL as an Alternative to MSSQL
BlackRay - The open Source Data Engine
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
What's New In PostgreSQL 9.4
File System On Steroids

What's hot (20)

PDF
Balisage - EXPath - A practical introduction
PDF
Introduction to dataset
PDF
Balisage - EXPath Packaging
PDF
RocksDB meetup
PDF
What's New in OpenLDAP
KEY
Using NoSQL MongoDB with ColdFusion
PPTX
Serialization and performance by Sergey Morenets
PDF
Extending WildFly
PDF
CBDW2014 - NoSQL Development With Couchbase and ColdFusion (CFML)
PDF
Transitioning From SQL Server to MySQL - Presentation from Percona Live 2016
PDF
MyRocks in MariaDB
PDF
Load testing in Zonky with Gatling
PDF
FITC presents: Mobile & offline data synchronization in Angular JS
PPTX
The Hive Think Tank: Rocking the Database World with RocksDB
PDF
RocksDB storage engine for MySQL and MongoDB
PDF
MongoDB WiredTiger Internals
PDF
Summary of JDK10 and What will come into JDK11
PDF
Summary of JDK10 and What will come into JDK11
PDF
Type safe, versioned, and rewindable stream processing with Apache {Avro, K...
PDF
Apache ManifoldCF @ Linux Day 2012
Balisage - EXPath - A practical introduction
Introduction to dataset
Balisage - EXPath Packaging
RocksDB meetup
What's New in OpenLDAP
Using NoSQL MongoDB with ColdFusion
Serialization and performance by Sergey Morenets
Extending WildFly
CBDW2014 - NoSQL Development With Couchbase and ColdFusion (CFML)
Transitioning From SQL Server to MySQL - Presentation from Percona Live 2016
MyRocks in MariaDB
Load testing in Zonky with Gatling
FITC presents: Mobile & offline data synchronization in Angular JS
The Hive Think Tank: Rocking the Database World with RocksDB
RocksDB storage engine for MySQL and MongoDB
MongoDB WiredTiger Internals
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
Type safe, versioned, and rewindable stream processing with Apache {Avro, K...
Apache ManifoldCF @ Linux Day 2012
Ad

Similar to Experiences with Evangelizing Java Within the Database (20)

PDF
Scotas - Oracle Open World Sao Pablo
PPTX
Oracle application container cloud back end integration using node final
DOCX
Prashant_Agrawal_CV
PPTX
Java Script recruiting
DOC
Venkata
PDF
Hadoop spark online demo
PPTX
Brk2051 sql server on linux and docker
PDF
Scala Days Highlights | BoldRadius
PDF
Mohamed Mahgoub_CV
DOC
Ankit Chohan - Java
PPTX
Python And The MySQL X DevAPI - PyCaribbean 2019
PDF
Node.js an Exectutive View
PPT
AWS (Hadoop) Meetup 30.04.09
PPTX
Brk3288 sql server v.next with support on linux, windows and containers was...
PPTX
Intro to big data analytics using microsoft machine learning server with spark
ODP
Intro to XPages for Administrators (DanNotes, November 28, 2012)
PPT
Rajnish singh(presentation on oracle )
PDF
node.js 실무 - node js in practice by Jesang Yoon
Scotas - Oracle Open World Sao Pablo
Oracle application container cloud back end integration using node final
Prashant_Agrawal_CV
Java Script recruiting
Venkata
Hadoop spark online demo
Brk2051 sql server on linux and docker
Scala Days Highlights | BoldRadius
Mohamed Mahgoub_CV
Ankit Chohan - Java
Python And The MySQL X DevAPI - PyCaribbean 2019
Node.js an Exectutive View
AWS (Hadoop) Meetup 30.04.09
Brk3288 sql server v.next with support on linux, windows and containers was...
Intro to big data analytics using microsoft machine learning server with spark
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Rajnish singh(presentation on oracle )
node.js 실무 - node js in practice by Jesang Yoon
Ad

Recently uploaded (20)

PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
ai tools demonstartion for schools and inter college
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PPTX
L1 - Introduction to python Backend.pptx
PPTX
history of c programming in notes for students .pptx
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
Online Work Permit System for Fast Permit Processing
PPTX
Introduction to Artificial Intelligence
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Digital Strategies for Manufacturing Companies
PDF
top salesforce developer skills in 2025.pdf
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
System and Network Administration Chapter 2
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
2025 Textile ERP Trends: SAP, Odoo & Oracle
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
ai tools demonstartion for schools and inter college
ManageIQ - Sprint 268 Review - Slide Deck
L1 - Introduction to python Backend.pptx
history of c programming in notes for students .pptx
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Online Work Permit System for Fast Permit Processing
Introduction to Artificial Intelligence
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
How to Migrate SBCGlobal Email to Yahoo Easily
Digital Strategies for Manufacturing Companies
top salesforce developer skills in 2025.pdf
CHAPTER 2 - PM Management and IT Context
Operating system designcfffgfgggggggvggggggggg
System and Network Administration Chapter 2

Experiences with Evangelizing Java Within the Database

  • 1. Experiences with Evangelizing Java Within the Database
  • 2. About ● About me – CTO at Scotas.com – Founder of the ArOUG – ACE Member since 2006 – Open Source Developer (DBPrism/ DBPrism CMS, LDI, ...) – Oracle developer since 1999 ● About Scotas – A company specialized in free text search, synchronization and Oracle – OLS, Native Solr integration – External Solr/ ElasticSearch integration www.scotas.com
  • 3. www.scotas.com Agenda – Database resident JVM – History of the JVM implementation – Evangelizing about Database resident JVM ● Experience during – Developing – Testing – Deploying ● Examples – Conclusion
  • 4. Database resident JVM time-line ● 8i (1999, JDK1.2, JSP, ORB, NCOMP) ● 9i (2001, JDK 1.3, NCOMP) ● 10g (2003 R1, 2005 R2, JDK 1.4, NCOMP) ● 11g (2007, JDK 1.5, JIT) ● 12c (2013, JDK 1.6/1.7/.., JIT) www.scotas.com
  • 5. Database resident JVM architecture www.scotas.com Components
  • 6. Sun’s JDK versus Database resident JVM Sun’s JDK VM ● Thread Based ● Sharing across Threads ● Limited Scalability ● Classes in file system ● Resolve classes with “Classpath” ● JIT ● Preemptive multi-threading ● Limited Robustness (process failure) Database resident JVM ● Database Session Model ● Session Isolation ● Unlimited Scalability ● Classes in database ● Resolve classes with “Resolver Spec” ● JIT (11g and up) ● Non-Preemptive multi- threading ● Does not crash as a whole www.scotas.com
  • 7. Oracle’s Commitment to OJVM ● Used by a growing number of database customers acording to Oracle ● Used by Oracle Components – InterMedia – Spatial – Text – XQuery (XMLDB) – WareHouse Builder – CDC (Change Data Capture) – ODM (Oracle Data Mining analytics functions) ● 12c Enhancements www.scotas.com
  • 8. ● Many among Fortune 500 companies ● Some examples from “Java in the Oracle Database @ Work – Customer Case Studies” ● And for sure Scotas & Cima Who is Using OJVM www.scotas.com
  • 9. Java in the Database: What For www.scotas.com ● Trigger-based Notification System using RMI ● Secure Credit-Card Processing using JSSE ● Custom Alert applications that monitor business data ● Sending emails with attachment from within the database ● Produce PDF files from Result Set ● Execute external OS commands and external procedures ● Implement Md5 CRC ● Publish Repository Content to Portal ● Portable Logistic Applications ● Implement Parsers for various File Formats (txt, zip, xml, binary) ● Implement Image Transformation and Format Conversion (GIF, PNG, JPEG, etc) ● Implement Database-resident Content Management System ● HTTP Call-Out ● JDBC Call-Out ● RMI Call-Out to SAP ● Web Services Call-Out ● Messaging across Tiers ● RESTful Database Web Services ● Near Real Time Full Text Search
  • 10. Evangelizing Java Within the Database www.scotas.com Experiences in:
  • 11. Experiences during development ● Basically any Java IDE works, but ● JDeveloper is better: – Database integration ● Database navigator ● Database reports ● Find objects ● DBMS_OUTPUT – Database resident Java Class browser – Remote debugger ● Use $ORACLE_HOME/jdk for compilling ● Use library dependencies $ORACLE_HOME: – javavm/lib/ (database resident JVM implemenetation Aurora) – rdbms/jlib/ (database resident APIs such as ODCI, XDB, Servlet) – jdk/lib/ (properly JDK specific libs) – lib/ (Oracle functionalities such as XML Parser) – jdbc/lib (Oracle JDBC implementation) ● If you have problem with target JDK, Retro-translator is your friend www.scotas.com
  • 12. Experiences during testing ● There is no visual feedback (Java headless) ● Code could be tested in an external JVM encapsulating your JDBC connection funtionality ● Use a logging framework – Java Util Logging works (JUL) – Apache Log4J works (more funtionality) – Usually logging information goes to .trc files ● Use JDeveloper for remote debugging (dbms_debug_jdwp) ● Incorporate JUnit integration – Class loader issues – Security concerns www.scotas.com
  • 13. Experiences during deployment ● Incorporate Ant or Maven – One sentence deployment – DBA likes scripts for installing – Imagine you are deploying your apps in a Datacenter using ssh ● Use NCOMP with DB version < 11g ● Important!!! name your libraries with version numbers major.minor.patch ● Allways incorporate version control (SVN, CVS, GIT) ● Write many test suites ● Size your Database resident memory areas properly www.scotas.com
  • 14. Examples – DBPrism CMS ● At the time of PSP (formerly HTMLDB, WebDB, Apex..) ● Using DBPrism connector example for the Book Profesional XML Databases ● Develop as an example for the Book Oracle Database Programming using Java and Web Services ● Presented at Second Open Source Content Management Conference , Berkeley, CA ● A CMS working as Java Stored Procedures ● Using Apache Cocoon as presentation framework ● Using Struts's controller idea, view (XQuery pages), Controller (Java Stored Procedures) ● Exploring many XMLDB functionalities (XQuery, XSL, Oracle Text, ...) www.scotas.com
  • 15. Examples – RESTFul Web Services ● An Extension to restlet.org project ● A Java Servlet Connector for XMLDB ● Incorporated to the code base of OSS Project ● Allows user to write RESTFul Web Services in Java ● Connection are accepted directly by Oracle Listener ● Many connections spawn several parallel shared servers ● Java reflection was used to avoid static dependency to propietary API ● Main problem found was Servlet 2.2 API support into XMLDB, still the same in 12c ● Allows remote debugging of RESTFul implementation ( dbms_debug_jdwp) www.scotas.com
  • 16. Examples - Scotas OLS www.scotas.com ● An Embedded version of Solr Framework running inside Oracle JVM ● 42 new Java Classes and several new PLSQL Object Types ● Four new SQL operators scontains(), sscore(), smlt(), shighlight() and poweful text analysis functionalities ● An orthogonal/up-to-date Solr solution for any programming language, especially Java, Ruby, Python, PHP and .Net, currently latest production version – 4.0.0. ● Available to any Oracle product such as BI, Apex, ODM create index esl_events_sidx on esl_events(message) indextype is Lucene.SolrIndex parameters('SyncMode:Deferred;MltColumn:text;HighlightColumn:title;DefaultColumn:text;Co mmitOnSync:true;ExtraTabs:ESL.esl_causes c;WhereCondition:L$MT.event_id=c.event_id(+);ExtraCols:.....') local parallel 2; create index esl_events_sidx on esl_events(message) indextype is Lucene.SolrIndex parameters('SyncMode:Deferred;MltColumn:text;HighlightColumn:title;DefaultColumn:text;Co mmitOnSync:true;ExtraTabs:ESL.esl_causes c;WhereCondition:L$MT.event_id=c.event_id(+);ExtraCols:.....') local parallel 2; select /*+ DOMAIN_INDEX_SORT */ sscore(1),shighlight(1),message from esl_events where scontains(message,'severity_s:(ERROR INFO) AND springframework',1)>0 and gen_day between 26 and 27; select /*+ DOMAIN_INDEX_SORT */ sscore(1),shighlight(1),message from esl_events where scontains(message,'severity_s:(ERROR INFO) AND springframework',1)>0 and gen_day between 26 and 27;
  • 17. Conclusions ● Open Source projects – Release early, release often (to attract contributors, see Hadoop version 0.20) – Due to Oracle License limitation we can not incorporate OSS code in main branch, Examples DBPrism Adapter, Restlet Adapter) – Loading OSS libraries into the RDBMS is not well views by DBAs ● Corporate projects – Impedance mistmatch ● DBA don't have Java skills ● Java Developers don't have DBA skills ● PLSQL Developer don't have OO skills – Architects don't really know database resident potentiality – Same challenges are now by incorporating Hadoop in Oracle projects www.scotas.com
  • 18. Answers! www.scotas.com | info@scotas.com | +1 (650) 704-7915 | 440 North Wolfe Road, Sunnyvale, CA 94085
  • 19. Thank You! www.scotas.com | info@scotas.com | +1 (650) 704-7915 | 440 North Wolfe Road, Sunnyvale, CA 94085