CRaSH: the shell for the Java Platform
-
Upload
jviet -
Category
Technology
-
view
1.277 -
download
1
description
Transcript of CRaSH: the shell for the Java Platform
CRaSHT H E S H E L L F O R T H E J AVA P L AT F O R M
S E P T E M B E R 2 0 1 3
@julienviet@defrancea
www.exoplatform.com - Copyright 2012 eXo Platform 2
JULIEN VIET
−Contact
− [email protected]−@julienviet−http://github.com/vietj
−Open source for 10 years
−Official mission: deliver enterprise grade portal server
−Marseille JUG Leader
−Involved in Java Community Process
www.exoplatform.com - Copyright 2012 eXo Platform 3
WHAT IS EXO PLATFORM?
eXo Platform is an open source social collaboration software solution designed for the Enterprise.
It is full featured, standard based, extensible and has an amazing design.
eXo Platform is featured in Gartner's Magic Quadrant for Horizontal Portal Products 2012 as a User eXperience Platform.
www.exoplatform.com - Copyright 2012 eXo Platform 4
ALAIN DEFRANCE
−Contact
−[email protected]−@alaindefrance−http://github.com/defrancea
−Open source for 3 years
−Contributed to open source projects like Crash
−Marseille JUG Leader
www.exoplatform.com - Copyright 2012 eXo Platform 5
BITTITAN
−SAAS Products
−MigrationWiz: Email migration−SMTPLogic: SMTP gateway−UserActivation: Easy onboarding to
Office365
−Our blog−http://blog.bittitan.com
www.exoplatform.com - Copyright 2012 eXo Platform 6
CRASH PROJECT
−Latest stable 1.2
−Work in progress 1.3
−Licensed under LGPL
−Compatibility
−Java 6+−Groovy 1.7+
www.exoplatform.com - Copyright 2012 eXo Platform 7
KEY CONCEPTS
−Command Line Interface for JVM
−Create easily and quickly commands
−Compose commands into pipelines
−Connectors provide local or remote access
www.exoplatform.com - Copyright 2012 eXo Platform 8
MODULAR DESIGN
−Core, connectors, plugins
−Only use what you need
−Memory−Dependencies
www.exoplatform.com - Copyright 2012 eXo Platform 9
CONNECTORS
−Defines shell interactions
−Asynchronous design
−Implemented by
−System.in / System.out−Telnet−SSH−Web−Attach
www.exoplatform.com - Copyright 2012 eXo Platform 10
PLUGIN ARCHITECTURE
−Keep core small and lightweight
−New features without impacting core
−Current plugins
−Authentication: simple, jaas, key, crowd, …−Languages: java, groovy, ruby, …−Services: mail, cron, …
www.exoplatform.com - Copyright 2012 eXo Platform 11
USER INTERFACE
−Interactive Real-Eval-Print-Loop
−SSH asynchronous execution
−Cron based execution (1.3)
www.exoplatform.com - Copyright 2012 eXo Platform 12
POLYGLOT
−Leverage polyglot JVM ecosystem
−Groovy
−Commands−REPL (1.3)
−Java
−Commands (1.3)
−Ruby work in progress
www.exoplatform.com - Copyright 2012 eXo Platform 13
EXECUTION MODES
−Standalone
−Attach to a running JVM
−Embedded
−Servlet listener−Spring−Guice−Grails−VisualVM
www.exoplatform.com - Copyright 2012 eXo Platform 14
BASE COMMANDS
−Covers JVM packages
−system−jdbc−jndi−jmx
−Utilities: filter, sort, egrep, sleep
www.exoplatform.com - Copyright 2012 eXo Platform 15
STANDALONE DEMO
www.exoplatform.com - Copyright 2012 eXo Platform 16
JNDI/JDBC/JPAATTACH
DEMO
www.exoplatform.com - Copyright 2012 eXo Platform 17
WRITING A COMMAND
public class mycommand {
@Command
@Usage(“the command”)
public void main(
@Usage(“foo option”)
@Option(names=[ “foo”]) String foo,
@Usage(“command arguments”)
@Argument List<String> args) {
…
}
}
% mycommand –foo the_option value1 value2
www.exoplatform.com - Copyright 2012 eXo Platform 18
EMBEDDED
−Trivial to embed
−Programmatic−Spring−Guice−Servlet listener
−Levels
−Embed−Virtual file system
www.exoplatform.com - Copyright 2012 eXo Platform 19
EMBEDDED BY
www.exoplatform.com - Copyright 2012 eXo Platform 20
SPRING EMDEDDEDTWITTER COMMAND
DEMO
www.exoplatform.com - Copyright 2012 eXo Platform 21
GIT LIKE COMMAND
public class git { @Command public void add(…) {…}
@Command public void commit(…) {…} …}
% git add .% git commit –m “feature implemented”
www.exoplatform.com - Copyright 2012 eXo Platform 22
TYPES
−String, primitive types, enums
−Converter
−properties, jmx object name …
−Completer
−java.io.File−system property name−enums−…
www.exoplatform.com - Copyright 2012 eXo Platform 23
COMMAND PIPE
% jmx find …
jmx find
ObjectName Map
jmx get
sort
www.exoplatform.com - Copyright 2012 eXo Platform 24
COMMAND PIPE
public class wc {
@Command
public PipeCommand<String, Integer>) main() {
return new PipeCommand<String, Integer>() {
int count = 0;
public void provide(String s) {
count += s.split(“\n”).length;
}
public void close() {
context.provide(count);
}
}
}
}
www.exoplatform.com - Copyright 2012 eXo Platform 25
JMX PIPE DEMO
www.exoplatform.com - Copyright 2012 eXo Platform 26
MAIL/CRONDEMO
www.exoplatform.com - Copyright 2012 eXo Platform 27
READ-EVAL-PRINT-LOOP
−Feature of 1.3
−Polyglot
www.exoplatform.com - Copyright 2012 eXo Platform 28
REPLDEMO
www.exoplatform.com - Copyright 2012 eXo Platform 29
WRAP UP
−A multi facet, powerful and extensible tool for all of us
−Try online : try.crashub.org
−Reach us at
−crashub.org−@crashub−[email protected]