SlideShare ist ein Scribd-Unternehmen logo
1 von 70
Downloaden Sie, um offline zu lesen
Railo 4.2, 5.0 and beyond 
Gert Franz, CTO 
Rasia Ltd.
© 2014 – Rasia Ltd. 
Rasia Ltd.? 
• Railo Technologies biggest contributor for 
Railo Server 
• Invested over 4M US$ over 8 years 
• New commercial branch/spin off necessary 
• We need a new entity in order to develop 
different products for Railo and/or for other 
engines 
• We want to make sure Railo Server survives 
the next 10 years as promised
© 2014 – Rasia Ltd. 
Rasia Ltd.? 
• Rasia Ltd. was founded with in the mean 
time 18 developers 
• Rasia Ltd. develops tools and applications 
with and for Railo 
• Railo Technologies will still remain the main 
contributor to Railo Server
© 2014 – Rasia Ltd. 
At a glance 
• Railo 4.2 – Recap 
• Railo 5.0 – The future of CFML 
• Rasia Tools – Be Productive! 
– ICF 
– Speed Booster
Railo 4.2 
Released 
at cf.objective()
Compatibility – 
Language & Syntax 
Railo 4.2
© 2014 – Rasia Ltd. 
Railo 4.2 – Language & Syntax 
• New tag notation in cfscript 
• Before: 
• <cfloop from="1" to="10" index="i"> 
• Became 
• loop from="1" to="10" index="i" { … } 
• Now becomes: 
• cfloop(from:1, to:10, index:"i") { … }
© 2014 – Rasia Ltd. 
Railo 4.2 – Language & Syntax 
• Member functions on literals: 
– [1,2,3,4].each( function() {} ); 
– {key:value}.keyExists(…); 
– query(col:[1,2,3,4]).addRow(1); 
– "This is a string".len() 
– "susi,peter,john,doe".listToArray();
© 2014 – Rasia Ltd. 
Railo 4.2 – Language & Syntax 
• Subscript Operator – Use a String like 
an Array 
– Instead of: 
mid("susi“, 3, 1) 
– You can now write: 
susi[3] 
Better performance and shorter syntax
Function 
Every      
Map      
Reduce      
Some      
Each      
© 2014 – Rasia Ltd. 
Railo 4.2 – New functionality 
Type 
Array Collection List Struct Query 
• All above except *reduce support the 
argument "parallel" and "maxThreads"
Type Condition returning true 
Queries record count = 0 
Arrays arrayLen = 0 
Structs key count = 0 
Strings empty string 
© 2014 – Rasia Ltd. 
Railo 4.2 – New functionality 
• New member function isEmpty() 
• "".isEmpty(), [].isEmpty(), {}.isEmpty() 
• Function len() now supports all types
© 2014 – Rasia Ltd. 
Railo 4.2 – New functionality 
• CFHTTP contains a new key in the result 
called cookie 
• CFFILE and CFDIRECTORY allow you to 
create the directory if it does not exist 
• getCanonicalPath() 
– Converts 
c:thisis/a/path....susipeter 
into 
c:thisissusipeter
Administrator 
Changes 
Railo 4.2
© 2014 – Rasia Ltd. 
Railo 4.2 – Administrator improvements 
• Disabling Type checking 
• Lots of settings move to the 
Application.cfc 
• Hints for the usage of these settings 
• Export page 
• New logging page
New Concepts 
Railo 4.2
© 2014 – Rasia Ltd. 
Railo 4.2 – New concepts 
• Application.cfc 
– Can be used for almost EVERY setting 
possible in the Railo Web Administrator 
– Generate export for an Application.cfc in 
the administrator
© 2014 – Rasia Ltd. 
Railo 4.2 – New concepts 
• Problem 
– How do you differenciate settings 
between environment & test? 
– How do you influence the standard 
behaviour? 
– Ever forgotten to use the attribute 
addtoken?
© 2014 – Rasia Ltd. 
Railo 4.2 – New concepts 
• Application.cfc allows you to define 
standard values for ANY attribute 
– Influence display of CFDUMP 
– Influence mailservers or database defaults
© 2014 – Rasia Ltd. 
Railo 4.2 – New concepts 
• Current implementation supports SOAP 
– International Standard 
– Transport protocol, very flexible 
– supported by all programming languages 
• BUT 
– Bloated XML format 
– Takes lots of time for conversion & serialization
© 2014 – Rasia Ltd. 
HTTP - Webservices 
• HTTP Webservices 
– Very lightweight 
– Very fast 
– Railo specific ATM 
– Autodetection of Railo HTTP Webservices
The future of CFML 
Railo 5.0
© 2014 – Rasia Ltd. 
Railo 5.0 
What is the focus? 
• Performance 
• Stability 
• Language improvements 
• Ease of use
Architectural 
changes 
Railo 5.0 – Main features
© 2014 – Rasia Ltd. 
Railo 5.0 
• Current problem 
– An application needs a JAR file, but the 
JAR file collides with an existing one 
– Updating JAR libaries 
– No way to manage jar libaries 
programmatically 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Railo 5.0 – Architectural changes 
• Solution: OSGi 
– Open Service Gateway initiative (2000) 
– A framework that manages libraries 
(bundles and versions) 
– Allows you to load libraries in different 
versions, all at the same time 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Railo 5.0 – Architectural changes 
• OSGi in Railo 5.0 
– COMPLETE rewrite of the architecture 
– Enterprise market requirement 
– Everything in Railo 5.0 is OSGi 
• Core 
• Extensions 
• JAR files 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Railo 5.0 – Architectural changes 
• OSGi in Railo 5.0 
– Better stability 
– Higher performance 
– All libraries used by Railo are bundles 
– Possible to load/unload and start/stop 
any library at any time 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Railo 5.0 – Architectural changes 
• OSGi in Railo 5.0 
– New set of functions that allow you to the power of this 
new functionality 
// load a class in a specific version 
dtf=javaLoad( 
bundle:"org-joda-time", 
version:"2.1.0", 
class:"org.joda.time.format.DateTimeFormat“ 
); 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Railo 5.0 – Architectural changes 
• OSGi in Railo 5.0 
– New set of functions 
// load a class in a specific version 
dtf=javaLoad( 
bundle:"org-joda-time", 
version:"2.1.0", 
class:"org.joda.time.format.DateTimeFormat“ 
); 
or 
oJavaClass = createJavaProxy( 
className, 
jarFile, 
OSGi bundle, 
version of the OSGi bundle); 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
JSR 223 
• Wikipedia says: "JSR 223 is a framework for 
embedding scripts into Java source code" 
• Oracle already included Javascript as of 
Java 6 
• Can be called from the command line like: 
>jrunscript something.js 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
JSR 223 
• Why not be able to call: 
>jrunscript –f cfml commandbox/Bootstrap.cfm 
Or 
>jrunscript –f cfml 
cfml>fileCopy(source, destination) 
cfml> 
• Might have a bigger impact on 
CommandBox • Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
Syntax changes 
Railo 5.0 – Main features
© 2014 – Rasia Ltd. 
Railo 5.0 – Syntax Changes 
• Introduction of Lambda functions 
– Shorhand notation for closures 
– Check out the example 
• Further operators & operator 
overloading 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Syntax Changes 
• New accessors for component members 
• Try this: 
component { 
this.displayName = "myCmpn"; 
private this.version = "1.0"; 
static { 
private static.susi = 1; 
} 
} 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Syntax changes 
• Component iterators: 
– By implementing the methods: 
• _hasNext(), _next(), _reset() 
– You now can do: 
oObjList = new someObjList("customers"); 
for(oCustomer in oCustomerList) { 
oCustomer.raiseInvoice(); 
} 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Syntax changes 
• New type of variable declaration 
var qry, susi, peter 
or 
local.qry, local.susi, local.peter 
Is equal to: 
var qry = null; 
var susi = null; 
var peter = null; 
or 
var qry = "" 
var susi = "" 
var peter = "" 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Syntax changes 
• New type of variable declaration 
var susi=4, var peter = 6, var qry = 7; 
Or of course: 
local.susi=4, local.peter = 6, local.qry = 7; 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Inline components 
• Now it is possible to define helper 
components within one line: 
// Closure components 
oMyComponent = component { 
function getData() { 
} 
}; 
oMyComponent.getData(); 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
Component 
enhancements 
Railo 5.0 – Main features
© 2014 – Rasia Ltd. 
Component enhancements 
• Current problem 
– creating components either as singletons 
or transients 
– No way for transients to store global data 
valid for all instances of the component 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Component enhancements 
• New keyword: static 
– Allows you to define 
• a static constructor 
• static data, shared amongst ALL instances of 
the SAME component 
• Static functions 
– For static functions a new operator is 
defined 
• MyComponent::myStaticFunction(); 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Component enhancements 
• Abstract and final components and 
functions 
– Abstract components & functions have to 
be inherited 
– Much better to use than interfaces 
– Final components & functions can not be 
inherited 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Component enhancements 
• Inline components 
– Usable for very simple components 
– Saves file operations 
– Increase in performance 
– Allows definition of multiple components 
in ONE cfc 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Component casters 
• Existing ones 
– _toString() 
– _toNumeric() 
– _toDateTime() 
– _toBoolean() 
• New ones 
– _toStruct() 
– _toArray() 
– _toQuery() 
– _toJSON() • Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Component enhancements 
• Operators 
– _compare(obj): number 
– _contains(obj): boolean 
• Allows you to do: 
oObj = new someObj(); 
oObj2 = new someOtherObj(); 
if (oObj gt oObj2) {} 
Or 
oObj.append(); // for arrays 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
Java interaction 
Railo 5.0 – Main features
© 2014 – Rasia Ltd. 
Java enhancements 
• component extendsjava="java.io.file" 
• cfscript language="java" 
• call Railo directly from java 
• Interaction with java code 
• Drop Java Reflection 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
© 2014 – Rasia Ltd. 
Scripting support JSR 223 
• Allows executing any script type inside 
a cfscript type 
– Groovy 
– Scala 
– Javascript 
– Python 
– Ruby, etc. 
• Architectural changes 
• Syntax changes 
• Component enhancements 
• Java interaction 
• Improved extendibility
Improved 
extendibility 
Railo 5.0 – Main features
© 2014 – Rasia Ltd. 
Improved extendibility 
• New way to write extensions 
– Convention based 
– Auto deployment possible 
• You simply drop files into a certain folder 
– Manifest file 
• Contains metadata of an autodeploy extension 
• Dependencies between extensions 
• Preconditions (e.g. requires Railo 5.0) 
Railo 5 will do the rest… 
• Architectural changes 
• Syntax changes 
• Java interaction 
• Component enhancements 
• Improved extendibility
Be producive! 
Rasia Tools
© 2014 – Rasia Ltd. 
Applications – Problem 
• Every application collects data from 
external resources 
• Depending on cache settings, data is 
constantly requested or not 
• There is no real overview of what data 
a server requests from any external 
resources
© 2014 – Rasia Ltd. 
Possible solution 
• Idea for a tool: 
– When enabled, checks all external 
resources, whether the data has changed 
since the last access 
– Determines dependencies (session, 
application, independent) 
– Displays potential cache candidates 
– Allow the user to select which candidate 
data to cache and for how long
© 2014 – Rasia Ltd. 
Possible solution 
• Analyzing data (eg. Queries) 
– Get the input parameters (SQL, 
Datasource, Session, Application etc.)  
determine entry hHash 
– Analyze the result (determine 
dependency & resulthash) 
– Store the change interval and the 
metadata
Say "hello" to 
Booster 
Rasia Tools
© 2014 – Rasia Ltd. 
Rasia – Booster 
• Caching of 
– Queries 
– Functions 
– Includes 
– HTTP calls 
– Files, Directories 
– Web Service Calls 
– Etc.
© 2014 – Rasia Ltd. 
Rasia – Booster 
• Apply rules 
– At the moment makes use of 
cachedWithin="smart" 
– If there is a rule for this inputHash, apply 
the rule according to the selection 
– Store statistics 
– Activate  boost!!!
© 2014 – Rasia Ltd. 
Rasia – Boost UI 
• Implemented as a Railo Admin plugin 
• Offers overview for Entries, Rules 
• Several Statistics and time estimates 
• Rasia Boost is available of course for 
Railo 5.x 
• But why not…
© 2014 – Rasia Ltd. 
Rasia – Tools 
• Make Boost available for ANY JVM 
application? 
– Groovy 
– Native Java app 
– ColdFusion
© 2014 – Rasia Ltd. 
JVM - Boost
© 2014 – Rasia Ltd. 
JVM - Boost
First project along the way: 
Say "hello" to 
ICF 
Rasia Tools
© 2014 – Rasia Ltd. 
Rasia – ICF 
• Railo > 3.0 allows you to use different 
kinds of Cache providers 
– Local or remote 
– Clustered or not 
• ACF is only able to talk to EHCache 
– Local 
– and with a tougher configuration remote
© 2014 – Rasia Ltd. 
Rasia – ICF 
• ICF allows you to use 
– Infinispan 
– With ColdFusion 9, 10 and 11 
– By using the usual functions 
• CacheGet() 
• CachePut() 
• CacheDelete(), etc.
© 2014 – Rasia Ltd. 
Rasia – ICF 
• We created an Installer for ACF 
• Allows you to install Extensions just like 
the extension provider in Railo 
• Will be released as a separate product
© 2014 – Rasia Ltd. 
Installer
© 2014 – Rasia Ltd. 
Installer
© 2014 – Rasia Ltd. 
Installer
© 2014 – Rasia Ltd. 
Installer
© 2014 – Rasia Ltd. 
Questions? 
• http://www.getrailo.org 
• http://www.getrailo.com 
• http://groups.google.com/group/railo 
• https://github.com/getrailo/railo 
• http://issues.jboss.org/jira/browse/RAILO 
• www.rasia.info

Weitere ähnliche Inhalte

Was ist angesagt?

CICS TS 5.1 Loader Domain enhancements
CICS TS 5.1 Loader Domain enhancementsCICS TS 5.1 Loader Domain enhancements
CICS TS 5.1 Loader Domain enhancements
Larry Lawler
 
Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform  Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform
WSO2
 
Apache Ambari - What's New in 1.5.0
Apache Ambari - What's New in 1.5.0Apache Ambari - What's New in 1.5.0
Apache Ambari - What's New in 1.5.0
Hortonworks
 

Was ist angesagt? (20)

KSCOPE Cloud Services and the Self Service Portal
KSCOPE Cloud Services  and the Self Service PortalKSCOPE Cloud Services  and the Self Service Portal
KSCOPE Cloud Services and the Self Service Portal
 
Oracle SOA Suite for High availability Enterprises
Oracle SOA Suite for High availability EnterprisesOracle SOA Suite for High availability Enterprises
Oracle SOA Suite for High availability Enterprises
 
Running SOA in the Cloud: SOA CS for SOA Suite Customers
Running SOA in the Cloud: SOA CS for SOA Suite CustomersRunning SOA in the Cloud: SOA CS for SOA Suite Customers
Running SOA in the Cloud: SOA CS for SOA Suite Customers
 
Deploying and Managing Hadoop Clusters with AMBARI
Deploying and Managing Hadoop Clusters with AMBARIDeploying and Managing Hadoop Clusters with AMBARI
Deploying and Managing Hadoop Clusters with AMBARI
 
CICS TS 5.1 Loader Domain enhancements
CICS TS 5.1 Loader Domain enhancementsCICS TS 5.1 Loader Domain enhancements
CICS TS 5.1 Loader Domain enhancements
 
SOA & WebLogic - Lift & Shift to the Cloud
SOA & WebLogic - Lift & Shift to the CloudSOA & WebLogic - Lift & Shift to the Cloud
SOA & WebLogic - Lift & Shift to the Cloud
 
Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform  Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform
 
MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014MySQL & Oracle Linux Keynote at Open Source India 2014
MySQL & Oracle Linux Keynote at Open Source India 2014
 
Overview of Oracle Product Portfolio (focus on Platform) - April, 2017
Overview of Oracle Product Portfolio (focus on Platform) - April, 2017Overview of Oracle Product Portfolio (focus on Platform) - April, 2017
Overview of Oracle Product Portfolio (focus on Platform) - April, 2017
 
Schema Registry & Stream Analytics Manager
Schema Registry  & Stream Analytics ManagerSchema Registry  & Stream Analytics Manager
Schema Registry & Stream Analytics Manager
 
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 DatabaseeProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
 
At&T Interactive: The Many Facets Of Ruby
At&T Interactive: The Many Facets Of RubyAt&T Interactive: The Many Facets Of Ruby
At&T Interactive: The Many Facets Of Ruby
 
Apache Phoenix Query Server PhoenixCon2016
Apache Phoenix Query Server PhoenixCon2016Apache Phoenix Query Server PhoenixCon2016
Apache Phoenix Query Server PhoenixCon2016
 
10 Useful New Features of ECMA Script 6
10 Useful New Features of ECMA Script 610 Useful New Features of ECMA Script 6
10 Useful New Features of ECMA Script 6
 
Provisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack ManagerProvisioning with Oracle Cloud Stack Manager
Provisioning with Oracle Cloud Stack Manager
 
Hive ACID Apache BigData 2016
Hive ACID Apache BigData 2016Hive ACID Apache BigData 2016
Hive ACID Apache BigData 2016
 
Apache Ambari Stack Extensibility
Apache Ambari Stack ExtensibilityApache Ambari Stack Extensibility
Apache Ambari Stack Extensibility
 
Tips & Tricks for Java & SOA Cloud Service
Tips & Tricks for Java & SOA Cloud ServiceTips & Tricks for Java & SOA Cloud Service
Tips & Tricks for Java & SOA Cloud Service
 
Performance Update: When Apache ORC Met Apache Spark
Performance Update: When Apache ORC Met Apache SparkPerformance Update: When Apache ORC Met Apache Spark
Performance Update: When Apache ORC Met Apache Spark
 
Apache Ambari - What's New in 1.5.0
Apache Ambari - What's New in 1.5.0Apache Ambari - What's New in 1.5.0
Apache Ambari - What's New in 1.5.0
 

Andere mochten auch

Andere mochten auch (20)

Social Media Strategy: Exploring the Basics
Social Media Strategy: Exploring the Basics Social Media Strategy: Exploring the Basics
Social Media Strategy: Exploring the Basics
 
Sinister
SinisterSinister
Sinister
 
Narrative Structure
Narrative StructureNarrative Structure
Narrative Structure
 
CBDW2014 - This is ColdBox 4
CBDW2014 - This is ColdBox 4CBDW2014 - This is ColdBox 4
CBDW2014 - This is ColdBox 4
 
과제 3
과제 3과제 3
과제 3
 
Presentation1
Presentation1Presentation1
Presentation1
 
Физика и техника.
Физика и техника.Физика и техника.
Физика и техника.
 
Asdfghjkl
AsdfghjklAsdfghjkl
Asdfghjkl
 
Costumes
CostumesCostumes
Costumes
 
Michael Jackson
Michael JacksonMichael Jackson
Michael Jackson
 
Flow Drinks statements november 2011
Flow Drinks statements november 2011Flow Drinks statements november 2011
Flow Drinks statements november 2011
 
ITB2015 - Winning with Vagrant, Puppet and Chef
ITB2015 - Winning with Vagrant, Puppet and ChefITB2015 - Winning with Vagrant, Puppet and Chef
ITB2015 - Winning with Vagrant, Puppet and Chef
 
Day 2 filming
Day 2 filmingDay 2 filming
Day 2 filming
 
Проблеми комп’ютероманії
Проблеми комп’ютероманіїПроблеми комп’ютероманії
Проблеми комп’ютероманії
 
ITB2016 -BDD testing and automation from the trenches
ITB2016 -BDD testing and automation from the trenchesITB2016 -BDD testing and automation from the trenches
ITB2016 -BDD testing and automation from the trenches
 
Саші Хортів
Саші ХортівСаші Хортів
Саші Хортів
 
Работа с подрядчиками
Работа с подрядчикамиРабота с подрядчиками
Работа с подрядчиками
 
Олі Мельник
Олі МельникОлі Мельник
Олі Мельник
 
ITB2015 - Go Commando with CommandBox CLI
ITB2015 - Go Commando with CommandBox CLIITB2015 - Go Commando with CommandBox CLI
ITB2015 - Go Commando with CommandBox CLI
 
ITB2016 - ColdBox 4 Modules
ITB2016 - ColdBox 4 ModulesITB2016 - ColdBox 4 Modules
ITB2016 - ColdBox 4 Modules
 

Ähnlich wie CBDW2014 - Railo 5.0 and Beyond

Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
ActiveState
 
Sakai 2.0 Architecture Update 2005-06-09
Sakai 2.0 Architecture Update 2005-06-09Sakai 2.0 Architecture Update 2005-06-09
Sakai 2.0 Architecture Update 2005-06-09
Charles Severance
 

Ähnlich wie CBDW2014 - Railo 5.0 and Beyond (20)

JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth Slides
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0
 
REST - Why, When and How? at AMIS25
REST - Why, When and How? at AMIS25REST - Why, When and How? at AMIS25
REST - Why, When and How? at AMIS25
 
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
 
APIdays 2016 - The State of Web API Languages
APIdays 2016  - The State of Web API LanguagesAPIdays 2016  - The State of Web API Languages
APIdays 2016 - The State of Web API Languages
 
Fundamental Paradigms for Java Developers: NoSQL and OSGI
Fundamental Paradigms for Java Developers: NoSQL and OSGIFundamental Paradigms for Java Developers: NoSQL and OSGI
Fundamental Paradigms for Java Developers: NoSQL and OSGI
 
Servlet 4.0 JavaOne 2017
Servlet 4.0 JavaOne 2017Servlet 4.0 JavaOne 2017
Servlet 4.0 JavaOne 2017
 
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
 
MySQL London Tech Tour March 2015 - MySQL Fabric
MySQL London Tech Tour March 2015 - MySQL FabricMySQL London Tech Tour March 2015 - MySQL Fabric
MySQL London Tech Tour March 2015 - MySQL Fabric
 
OUGLS 2016: Guided Tour On The MySQL Source Code
OUGLS 2016: Guided Tour On The MySQL Source CodeOUGLS 2016: Guided Tour On The MySQL Source Code
OUGLS 2016: Guided Tour On The MySQL Source Code
 
Sakai 2.0 Architecture Update 2005-06-09
Sakai 2.0 Architecture Update 2005-06-09Sakai 2.0 Architecture Update 2005-06-09
Sakai 2.0 Architecture Update 2005-06-09
 
Coherence RoadMap 2018
Coherence RoadMap 2018Coherence RoadMap 2018
Coherence RoadMap 2018
 
SAP HANA Native Application Development
SAP HANA Native Application DevelopmentSAP HANA Native Application Development
SAP HANA Native Application Development
 
Year in Review: Perforce 2014 Product Updates
Year in Review: Perforce 2014 Product UpdatesYear in Review: Perforce 2014 Product Updates
Year in Review: Perforce 2014 Product Updates
 
REST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical LookREST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical Look
 
Change data capture with MongoDB and Kafka.
Change data capture with MongoDB and Kafka.Change data capture with MongoDB and Kafka.
Change data capture with MongoDB and Kafka.
 
Building Agile and Resilient Schema Transformations using Apache Kafka and ESB's
Building Agile and Resilient Schema Transformations using Apache Kafka and ESB'sBuilding Agile and Resilient Schema Transformations using Apache Kafka and ESB's
Building Agile and Resilient Schema Transformations using Apache Kafka and ESB's
 
What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)
 
West Yorkshire Mulesoft Meetup #6
West Yorkshire Mulesoft Meetup #6West Yorkshire Mulesoft Meetup #6
West Yorkshire Mulesoft Meetup #6
 

Mehr von Ortus Solutions, Corp

Mehr von Ortus Solutions, Corp (20)

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Ortus Government.pdf
Ortus Government.pdfOrtus Government.pdf
Ortus Government.pdf
 
Luis Majano The Battlefield ORM
Luis Majano The Battlefield ORMLuis Majano The Battlefield ORM
Luis Majano The Battlefield ORM
 
Brad Wood - CommandBox CLI
Brad Wood - CommandBox CLI Brad Wood - CommandBox CLI
Brad Wood - CommandBox CLI
 
Secure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusionSecure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusion
 
Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023
 
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdfITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
 
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdfITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
 
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdfITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
 
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdfITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
 
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdfITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
 
ITB_2023_CBWire_v3_Grant_Copley.pdf
ITB_2023_CBWire_v3_Grant_Copley.pdfITB_2023_CBWire_v3_Grant_Copley.pdf
ITB_2023_CBWire_v3_Grant_Copley.pdf
 
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdfITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
 
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdfITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
 
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdfITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
 
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdfITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
 
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdfITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
 
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdfITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
 
ITB2023 Developing for Performance - Denard Springle.pdf
ITB2023 Developing for Performance - Denard Springle.pdfITB2023 Developing for Performance - Denard Springle.pdf
ITB2023 Developing for Performance - Denard Springle.pdf
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

CBDW2014 - Railo 5.0 and Beyond

  • 1. Railo 4.2, 5.0 and beyond Gert Franz, CTO Rasia Ltd.
  • 2. © 2014 – Rasia Ltd. Rasia Ltd.? • Railo Technologies biggest contributor for Railo Server • Invested over 4M US$ over 8 years • New commercial branch/spin off necessary • We need a new entity in order to develop different products for Railo and/or for other engines • We want to make sure Railo Server survives the next 10 years as promised
  • 3. © 2014 – Rasia Ltd. Rasia Ltd.? • Rasia Ltd. was founded with in the mean time 18 developers • Rasia Ltd. develops tools and applications with and for Railo • Railo Technologies will still remain the main contributor to Railo Server
  • 4. © 2014 – Rasia Ltd. At a glance • Railo 4.2 – Recap • Railo 5.0 – The future of CFML • Rasia Tools – Be Productive! – ICF – Speed Booster
  • 5. Railo 4.2 Released at cf.objective()
  • 6. Compatibility – Language & Syntax Railo 4.2
  • 7. © 2014 – Rasia Ltd. Railo 4.2 – Language & Syntax • New tag notation in cfscript • Before: • <cfloop from="1" to="10" index="i"> • Became • loop from="1" to="10" index="i" { … } • Now becomes: • cfloop(from:1, to:10, index:"i") { … }
  • 8. © 2014 – Rasia Ltd. Railo 4.2 – Language & Syntax • Member functions on literals: – [1,2,3,4].each( function() {} ); – {key:value}.keyExists(…); – query(col:[1,2,3,4]).addRow(1); – "This is a string".len() – "susi,peter,john,doe".listToArray();
  • 9. © 2014 – Rasia Ltd. Railo 4.2 – Language & Syntax • Subscript Operator – Use a String like an Array – Instead of: mid("susi“, 3, 1) – You can now write: susi[3] Better performance and shorter syntax
  • 10. Function Every      Map      Reduce      Some      Each      © 2014 – Rasia Ltd. Railo 4.2 – New functionality Type Array Collection List Struct Query • All above except *reduce support the argument "parallel" and "maxThreads"
  • 11. Type Condition returning true Queries record count = 0 Arrays arrayLen = 0 Structs key count = 0 Strings empty string © 2014 – Rasia Ltd. Railo 4.2 – New functionality • New member function isEmpty() • "".isEmpty(), [].isEmpty(), {}.isEmpty() • Function len() now supports all types
  • 12. © 2014 – Rasia Ltd. Railo 4.2 – New functionality • CFHTTP contains a new key in the result called cookie • CFFILE and CFDIRECTORY allow you to create the directory if it does not exist • getCanonicalPath() – Converts c:thisis/a/path....susipeter into c:thisissusipeter
  • 14. © 2014 – Rasia Ltd. Railo 4.2 – Administrator improvements • Disabling Type checking • Lots of settings move to the Application.cfc • Hints for the usage of these settings • Export page • New logging page
  • 16. © 2014 – Rasia Ltd. Railo 4.2 – New concepts • Application.cfc – Can be used for almost EVERY setting possible in the Railo Web Administrator – Generate export for an Application.cfc in the administrator
  • 17. © 2014 – Rasia Ltd. Railo 4.2 – New concepts • Problem – How do you differenciate settings between environment & test? – How do you influence the standard behaviour? – Ever forgotten to use the attribute addtoken?
  • 18. © 2014 – Rasia Ltd. Railo 4.2 – New concepts • Application.cfc allows you to define standard values for ANY attribute – Influence display of CFDUMP – Influence mailservers or database defaults
  • 19. © 2014 – Rasia Ltd. Railo 4.2 – New concepts • Current implementation supports SOAP – International Standard – Transport protocol, very flexible – supported by all programming languages • BUT – Bloated XML format – Takes lots of time for conversion & serialization
  • 20. © 2014 – Rasia Ltd. HTTP - Webservices • HTTP Webservices – Very lightweight – Very fast – Railo specific ATM – Autodetection of Railo HTTP Webservices
  • 21. The future of CFML Railo 5.0
  • 22. © 2014 – Rasia Ltd. Railo 5.0 What is the focus? • Performance • Stability • Language improvements • Ease of use
  • 23. Architectural changes Railo 5.0 – Main features
  • 24. © 2014 – Rasia Ltd. Railo 5.0 • Current problem – An application needs a JAR file, but the JAR file collides with an existing one – Updating JAR libaries – No way to manage jar libaries programmatically • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 25. © 2014 – Rasia Ltd. Railo 5.0 – Architectural changes • Solution: OSGi – Open Service Gateway initiative (2000) – A framework that manages libraries (bundles and versions) – Allows you to load libraries in different versions, all at the same time • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 26. © 2014 – Rasia Ltd. Railo 5.0 – Architectural changes • OSGi in Railo 5.0 – COMPLETE rewrite of the architecture – Enterprise market requirement – Everything in Railo 5.0 is OSGi • Core • Extensions • JAR files • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 27. © 2014 – Rasia Ltd. Railo 5.0 – Architectural changes • OSGi in Railo 5.0 – Better stability – Higher performance – All libraries used by Railo are bundles – Possible to load/unload and start/stop any library at any time • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 28. © 2014 – Rasia Ltd. Railo 5.0 – Architectural changes • OSGi in Railo 5.0 – New set of functions that allow you to the power of this new functionality // load a class in a specific version dtf=javaLoad( bundle:"org-joda-time", version:"2.1.0", class:"org.joda.time.format.DateTimeFormat“ ); • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 29. © 2014 – Rasia Ltd. Railo 5.0 – Architectural changes • OSGi in Railo 5.0 – New set of functions // load a class in a specific version dtf=javaLoad( bundle:"org-joda-time", version:"2.1.0", class:"org.joda.time.format.DateTimeFormat“ ); or oJavaClass = createJavaProxy( className, jarFile, OSGi bundle, version of the OSGi bundle); • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 30. © 2014 – Rasia Ltd. JSR 223 • Wikipedia says: "JSR 223 is a framework for embedding scripts into Java source code" • Oracle already included Javascript as of Java 6 • Can be called from the command line like: >jrunscript something.js • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 31. © 2014 – Rasia Ltd. JSR 223 • Why not be able to call: >jrunscript –f cfml commandbox/Bootstrap.cfm Or >jrunscript –f cfml cfml>fileCopy(source, destination) cfml> • Might have a bigger impact on CommandBox • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 32. Syntax changes Railo 5.0 – Main features
  • 33. © 2014 – Rasia Ltd. Railo 5.0 – Syntax Changes • Introduction of Lambda functions – Shorhand notation for closures – Check out the example • Further operators & operator overloading • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 34. © 2014 – Rasia Ltd. Syntax Changes • New accessors for component members • Try this: component { this.displayName = "myCmpn"; private this.version = "1.0"; static { private static.susi = 1; } } • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 35. © 2014 – Rasia Ltd. Syntax changes • Component iterators: – By implementing the methods: • _hasNext(), _next(), _reset() – You now can do: oObjList = new someObjList("customers"); for(oCustomer in oCustomerList) { oCustomer.raiseInvoice(); } • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 36. © 2014 – Rasia Ltd. Syntax changes • New type of variable declaration var qry, susi, peter or local.qry, local.susi, local.peter Is equal to: var qry = null; var susi = null; var peter = null; or var qry = "" var susi = "" var peter = "" • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 37. © 2014 – Rasia Ltd. Syntax changes • New type of variable declaration var susi=4, var peter = 6, var qry = 7; Or of course: local.susi=4, local.peter = 6, local.qry = 7; • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 38. © 2014 – Rasia Ltd. Inline components • Now it is possible to define helper components within one line: // Closure components oMyComponent = component { function getData() { } }; oMyComponent.getData(); • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 39. Component enhancements Railo 5.0 – Main features
  • 40. © 2014 – Rasia Ltd. Component enhancements • Current problem – creating components either as singletons or transients – No way for transients to store global data valid for all instances of the component • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 41. © 2014 – Rasia Ltd. Component enhancements • New keyword: static – Allows you to define • a static constructor • static data, shared amongst ALL instances of the SAME component • Static functions – For static functions a new operator is defined • MyComponent::myStaticFunction(); • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 42. © 2014 – Rasia Ltd. Component enhancements • Abstract and final components and functions – Abstract components & functions have to be inherited – Much better to use than interfaces – Final components & functions can not be inherited • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 43. © 2014 – Rasia Ltd. Component enhancements • Inline components – Usable for very simple components – Saves file operations – Increase in performance – Allows definition of multiple components in ONE cfc • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 44. © 2014 – Rasia Ltd. Component casters • Existing ones – _toString() – _toNumeric() – _toDateTime() – _toBoolean() • New ones – _toStruct() – _toArray() – _toQuery() – _toJSON() • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 45. © 2014 – Rasia Ltd. Component enhancements • Operators – _compare(obj): number – _contains(obj): boolean • Allows you to do: oObj = new someObj(); oObj2 = new someOtherObj(); if (oObj gt oObj2) {} Or oObj.append(); // for arrays • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 46. Java interaction Railo 5.0 – Main features
  • 47. © 2014 – Rasia Ltd. Java enhancements • component extendsjava="java.io.file" • cfscript language="java" • call Railo directly from java • Interaction with java code • Drop Java Reflection • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 48. © 2014 – Rasia Ltd. Scripting support JSR 223 • Allows executing any script type inside a cfscript type – Groovy – Scala – Javascript – Python – Ruby, etc. • Architectural changes • Syntax changes • Component enhancements • Java interaction • Improved extendibility
  • 49. Improved extendibility Railo 5.0 – Main features
  • 50. © 2014 – Rasia Ltd. Improved extendibility • New way to write extensions – Convention based – Auto deployment possible • You simply drop files into a certain folder – Manifest file • Contains metadata of an autodeploy extension • Dependencies between extensions • Preconditions (e.g. requires Railo 5.0) Railo 5 will do the rest… • Architectural changes • Syntax changes • Java interaction • Component enhancements • Improved extendibility
  • 52. © 2014 – Rasia Ltd. Applications – Problem • Every application collects data from external resources • Depending on cache settings, data is constantly requested or not • There is no real overview of what data a server requests from any external resources
  • 53. © 2014 – Rasia Ltd. Possible solution • Idea for a tool: – When enabled, checks all external resources, whether the data has changed since the last access – Determines dependencies (session, application, independent) – Displays potential cache candidates – Allow the user to select which candidate data to cache and for how long
  • 54. © 2014 – Rasia Ltd. Possible solution • Analyzing data (eg. Queries) – Get the input parameters (SQL, Datasource, Session, Application etc.)  determine entry hHash – Analyze the result (determine dependency & resulthash) – Store the change interval and the metadata
  • 55. Say "hello" to Booster Rasia Tools
  • 56. © 2014 – Rasia Ltd. Rasia – Booster • Caching of – Queries – Functions – Includes – HTTP calls – Files, Directories – Web Service Calls – Etc.
  • 57. © 2014 – Rasia Ltd. Rasia – Booster • Apply rules – At the moment makes use of cachedWithin="smart" – If there is a rule for this inputHash, apply the rule according to the selection – Store statistics – Activate  boost!!!
  • 58. © 2014 – Rasia Ltd. Rasia – Boost UI • Implemented as a Railo Admin plugin • Offers overview for Entries, Rules • Several Statistics and time estimates • Rasia Boost is available of course for Railo 5.x • But why not…
  • 59. © 2014 – Rasia Ltd. Rasia – Tools • Make Boost available for ANY JVM application? – Groovy – Native Java app – ColdFusion
  • 60. © 2014 – Rasia Ltd. JVM - Boost
  • 61. © 2014 – Rasia Ltd. JVM - Boost
  • 62. First project along the way: Say "hello" to ICF Rasia Tools
  • 63. © 2014 – Rasia Ltd. Rasia – ICF • Railo > 3.0 allows you to use different kinds of Cache providers – Local or remote – Clustered or not • ACF is only able to talk to EHCache – Local – and with a tougher configuration remote
  • 64. © 2014 – Rasia Ltd. Rasia – ICF • ICF allows you to use – Infinispan – With ColdFusion 9, 10 and 11 – By using the usual functions • CacheGet() • CachePut() • CacheDelete(), etc.
  • 65. © 2014 – Rasia Ltd. Rasia – ICF • We created an Installer for ACF • Allows you to install Extensions just like the extension provider in Railo • Will be released as a separate product
  • 66. © 2014 – Rasia Ltd. Installer
  • 67. © 2014 – Rasia Ltd. Installer
  • 68. © 2014 – Rasia Ltd. Installer
  • 69. © 2014 – Rasia Ltd. Installer
  • 70. © 2014 – Rasia Ltd. Questions? • http://www.getrailo.org • http://www.getrailo.com • http://groups.google.com/group/railo • https://github.com/getrailo/railo • http://issues.jboss.org/jira/browse/RAILO • www.rasia.info