Unification and new developments of Geant4 (G)UI toolkits for educational applications New Geant4 Extensions Hajime Yoshida Shikoku University 2008 September.

Slides:



Advertisements
Similar presentations
What is a Programming Language? The computer operates using binary numbers. The computer only knows about 1’s and 0’s. Humans can also use 1’s and 0’s,
Advertisements

1 JRuby on Rails GAO ANG Sun Functional Campus Ambassador 1.
Programming Creating programs that run on your PC
Google Web Toolkit - Gufran Mohammed. Google Web Toolkit (GWT) is an open source Java software development framework that makes writing AJAX applications.
Chapter 3.2 C++, Java, and Scripting Languages. 2 C++ C used to be the most popular language for games Today, C++ is the language of choice for game development.
Chapter 3.2 C++, Java, and Scripting Languages “The major programming languages used in game development.”
Chapter 3.2 C++, Java, and Scripting Languages hacked by jeffery.
Russell Taylor Lecturer in Computing & Business Studies.
Chapter 13 Web Application Infrastructure. Objectives Explain the components and purpose of a web application platform Describe several common webapp.
L EC. 01: J AVA FUNDAMENTALS Fall Java Programming.
Google AppEngine. Google App Engine enables you to build and host web apps on the same systems that power Google applications. App Engine offers fast.
SEEM4570: XAMPP, Eclipse, Summary of Html Kangfei Zhao Room 711,ERB
OMap By: Haitham Khateeb Yamama Dagash Under Suppervision of: Benny Daon.
Improvements in Interface, Intercoms and environments Koichi Murakami (KEK/CRC) Koichi Murakami Geant4 Collaboration Workshop (18/Sep/2007) 1.
RUBY ON RAILS It’s so rad. What we’ll cover  What is Ruby?  What is RoR?  Why RoR?  Developing with RoR  Deployment  Demo  Questions.
ITM352 PHP and Dynamic Web Pages: Server Side Processing.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
Lecture 8 – Platform as a Service. Introduction We have discussed the SPI model of Cloud Computing – IaaS – PaaS – SaaS.
Joel Bapaga on Web Design Strategies Technologies Commercial Value.
CSCI 224 Introduction to Java Programming. Course Objectives  Learn the Java programming language: Syntax, Idioms Patterns, Styles  Become comfortable.
M1G Introduction to Programming 2 4. Enhancing a class:Room.
Ruby & rails by Nicholas Belotti. What is ruby Ruby is an object orientated scripting language. In Ruby...everything is an object! Ruby was released in.
Sadegh Aliakbary. Copyright ©2014 JAVACUP.IRJAVACUP.IR All rights reserved. Redistribution of JAVACUP contents is not prohibited if JAVACUP.
Java, Python, Zope and Indexing Having Your Cake and Eating It Chris Withers
What’s new in Stack 3.2 Michael Youngstrom. Disclaimer This IS a presentation – So sit back and relax Please ask questions.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
PHP TUTORIAL. HISTORY OF PHP  PHP as it's known today is actually the successor to a product named PHP/FI.  Created in 1994 by Rasmus Lerdorf, the very.
Presentation: SOAP in a distributed object framework, Application Servers & AXIS SOAP.
Lecture 19 Web Application Frameworks Boriana Koleva Room: C54
Programming language A programming language is an artificial language designed to communicate instructions to a machine,languageinstructionsmachine particularly.
Programming Languages , perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.
The Basics of Javadoc Presented By: Wes Toland. Outline  Overview  Background  Environment  Features Javadoc Comment Format Javadoc Program HTML API.
Cloud Computing Computer Science Innovations, LLC.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Introduction to PHP and MySQL Kirkwood Center for Continuing Education By Fred McClurg, © Copyright 2015, Fred McClurg, All Rights.
1 3. Computing System Fundamentals 3.1 Language Translators.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
Guide to Programming with Python Chapter One Getting Started: The Game Over Program.
Presentation: SOAP/WS in a distributed object framework, Application Servers & AXIS SOAP.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
We will talking about story of JAVA language. By Kristsada Songpartom.
Eclipse 24-Apr-17.
Ruby on Java Luc Castera
Computing System Fundamentals 3.1 Language Translators.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
Introduction Mehdi Einali Advanced Programming in Java 1.
Parallel Session Interfaces This session is intended to be a working session with a couple of introductory presentations “Geant4 Web Application” by Hajime.
1 G4UIRoot Isidro González ALICE ROOT /10/2002.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
XAMPP.
Basics Components of Web Design & Development Basics, Components, Design and Development.
A S P. Outline  The introduction of ASP  Why we choose ASP  How ASP works  Basic syntax rule of ASP  ASP’S object model  Limitations of ASP  Summary.
Bucharest, 23 February 2005 CHM PTK technologies Adriana Baciu Finsiel Romania.
Presented By P.SRIVIDYA 085D1A0552 Programming Language.
JRuby on Rails Presenter Name
JRuby on Rails Brian Leonard ブライアン レオナルド
Chapter 13 Web Application Infrastructure
The language focusses on ease of use
ITM352 PHP and Dynamic Web Pages: Server Side Processing 1.
Platform as a Service.
GLAST Release Manager Automated code compilation via the Release Manager Navid Golpayegani, GSFC/SSAI Overview The Release Manager is a program responsible.
Benefits To Used PHP To Create Websites. PHP – Hypertext Transfer Protocol PHP consider the most famed programming language for developing websites or.
Introduction Enosis Learning.
Ruby, Rails, GUIs, and More
PHP / MySQL Introduction
Introduction Enosis Learning.
Chapter 7 –Implementation Issues
(Computer fundamental Lab)
Top PHP Development Tools For PHP Developers By: iblinfotech.com iblinfotech.com.
Plug-In Architecture Pattern
Presentation transcript:

Unification and new developments of Geant4 (G)UI toolkits for educational applications New Geant4 Extensions Hajime Yoshida Shikoku University 2008 September 2, LAPP, Annecy

Existing Geant4 (G)UI toolkits MOMO: Java-based – GAG = to run Geant4; connection via pipes – GGE = to create a C++ geometry class – GPE = to create an em physics list C++ class – And other functions G4py: Python-based – Many useful Geant4 classes are wrapped – Run Geant4 applications, using scripts – Powerful widgets kits – Seamless interfacing with ROOT etc. Web frameworks tested for authoring and deployment – Turbogears, django (Python)‏ – MediaWiki (PHP)‏ – Confluence

Existing (G)UI toolkits are separated MOMO – Only JRE is required. – Installation is easy now. – No knowledge on Java is required to use MOMO. G4py – Python + boost-python is required. – Compilation using boost-python is complicated even with Koichi’s sophisticated configure script, since every user may have his old environments – Installation is easier now. – Knowledge of Python is required to use g4py. Web frameworks – Must be developed by developers. – Contents may be provided by users.

Unification we hope By using scripting capability – No coding in C++ – Rapid cycling of code creation – Connection with other toolkit is easy – But there are many scripting languages By using Python as a script language – Now it is popular also in scientific applications – Integration with Web is advanced – Connection with Java is now realistic

Java SE6 and Scripting scripting.dev.java.net Java SE 6 will contain JSR 223: Scripting for the JavaTM Platform API classes. This Framework can be used to host Script Engines in Java Applications. Sun's implementation of Java SE 6 includes a Script Engine based on Rhino: JavaScript for Java version 1.6R2JSR 223: Scripting for the JavaTM PlatformRhino: JavaScript for Java The Scripting Framework also supports third-party Script Engines that implement the JSR 223 Scripting APIs. The primary purpose of this project is to provide ScriptEngine implementations that developers can use in their Java Applications. Developers can also use the Script Engines as examples of how to implement the Scripting APIs using their own Java-based Scripting implementations.JSR 223 Scripting APIs This project also includes example applications that use the Scripting Framework. Developers are invited to participate in the project by including their own ScriptEngines and applications. The Source Code in the project is licensed under the BSD License. The third-party scripting implementations used by several of the Script Engines are included in binary form for convenience. In some cases their licensing terms impose conditions and restrictions on software derived from them or using them. The text of each third-party license is included. ScriptEngineManager m = new ScriptEngineManager(); ScriptEngineManager ScriptEngine fooEngine = m.getEngineByName("Foo"); ScriptEngine

Sun Gets Serious About Python Posted by Gavin Terrill on Jul 08, :45 PM Python has been enjoying a tremendous rise in popularity recently. At the beginning of the year Python became TIOBE's language of the Year (for 2007), surpassing Perl and making it the 6th most popular language.Python became TIOBE's language of the Year Then, Django started to gain prominence, followed shortly after by the release of Google's AppEngine, which features Python technology.Django started to gain prominencefeatures Python technology Today, Python got a further boost with two announcements from Sun that strengthen their support of the language. Dynamic Languages & Tools Architect Ted Leung and Jython Project Lead Frank Wierzbicki announced that future releases of NetBeans will support Python and Jython.two announcements Ted LeungFrank WierzbickiNetBeansPythonJython – A detailed list of planned features is available on the nbPython project page, and includes: Syntax highlighting with version support, Code Completion, Python/Jython support, PyUnit support, Debugger support, Python library manager, Bundled Jython Package and Execution of python scriptsnbPython

Reuse of MOMO with Jython Installation of Jython is quite easy – Jython2.2.1 tested but will not be used – Jython2.5a1+ are tested and will be used – Java5 or java6 running on Linux and MacOSX Small reorganisation of Java classes was made to make test use of MOMO – Use as Java application – Reuse of MOMO.jar in Jython script Almost all MOMO’s functions work in script but – Java thread connection? – Java’s special dependencies of widgets classes using MVC?

Jython2.5α1+

Use of Jython- part 1 Python/Jython reuses existing Java classes – Reorganization of component Java classes – Reintegration of these classes with Jython – Add new functionalities with Jython scripts Java uses Python interpreter – Any pure Python scripts can be runnable Simple console, f.e. – But not g4py? (Koichi)‏ Further advantages? – Java’s true multi-thread capability – Connection with other JVM based scripting languages;

Use of Jython – Part 2 Python as a language of Web frameworks – Jython2.5 is coming soon Competition with other scripting languages – Execution time compared to Java : groovy: x 5.5 〜 500 rhino: x 1.5 〜 50 jython: x 2 〜 150 jruby: x 20 〜 6000 Affinity with Ajax ?

Python Web Framework on the JVM Posted by Craig Wickesser on Jan 19, :49 PM Python, a dynamic object-oriented programming language, has been around for quite some time. In its lifetime there have been many web frameworks to choose from (i.e. Pylons, TurboGears, CherryPy, Zope, Django, etc) making it difficult for developers to make a selection as Ian Bicking pointed out, PythonIan Bicking For a long, long time (longer than most of those frameworks have existed) people have complained about the proliferation of web frameworks in Python. Recently Django has picked up steam in the world of Python and Java. Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Developed and used over two years by a fast-moving online-news operation, Django was designed to handle two challenges: the intensive deadlines of a newsroom and the stringent requirements of the experienced Web developers who wrote it. It lets you build high- performing, elegant Web applications quickly. Django focuses on automating as much as possible and adhering to the DRY principle.Django On the JVM side there exists Jython, An implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform. It took nearly 6 years for Jython to go from version 2.1 to 2.2, but in just the last few months Jython has gone through two release candidates and another stable release, currently at The Jython developers are working hard on producing Jython 2.5 which aims to align Jython with CPython 2.5 and provide a much cleaner and consistent code base. A side goal of Jython 2.5 is to try to get some CPython frameworks working, especially the web frameworks, for example: Django, Pylons, TurboGears, Twisted.Jython

What is the expected release date for Django on Jython? This year. It's predicated on the next release of Jython. See #2 for that planning. Django in contrast just works, with only minor changes, thanks to a lot of work that many other people did in identifying (minor) Jython incompatibilities. Now most of the problems we have identified actually occur only in testing, where Django makes certain assumptions about Python should run that don't apply to Jython. An example of such an assumption that the hash algorithm is the same for dictionary implementations; because we use Java's (ConcurrentHashMap), this is not the case. However, that's an artifact of the testing process, Django doesn't really care about that. Still, we plan to certify this by passing all the tests (fixed as necessary). What version of Jython is going to be required? Jython equivalent to CPython 2.5 (or what is conventionally called Python!) is what we are targeting in the Jython project. This is actually moving very fast. We have a 2.5 compiler that's available for experimental usage, but it's getting more and more robust as we have additional people testing it. This "newcompiler" was initiated by a Google Summer of Code project that I mentored. (Bruce Eckel mentioned this in a blog post. We in fact hit that mid-September date!) At the Python Conference in mid-March, we will be setting the specific target based on where we are. Tobias and I will also be presenting our paper "A New Compiler for Jython" at PyCon. With the release, will there be a simpler install? Currently your blog post suggests applying patches, copying files, etc. There will be a simple install! My reporting was simply to show how close we were in fact to this goal.blog postPython Conference"A New Compiler for Jython"blog post I also anticipate plugin support in major IDEs like Eclipse or Netbeans, although this will come later. Is Django trying to be what Rails is for Ruby and Grails is becoming for Groovy? Django offers comparable functionality to those web app frameworks, with ostensibly a more robust platform. So Django is written to be multithreaded, unlike RoR, which means we don't have to go through a lot of tricks to make it work on the Java platform, such as using multiple classloaders. We currently have database support for PostgreSQL, with some work done also on MySQL. I helped write the Oracle backend for Django. We're also planning to support Java DB (Derby). Jim also expressed the usefulness of having a preconfigured stack available, to ease the experimentation of using Django on Jython (DoJ), I'd like to see the following preconfigured stack available for Django on Jython (DoJ): Derby + Tomcat. This should be something that a developer can just access via a plugin from Eclipse or Netbeans or IDE of their choice, which means they can configure Derby and Tomcat directly from the IDE. It also provides an obvious migration path to other containers and databases. Perhaps more importantly, such a setup allows for easy DoJ experimentation, whether that's for someone building a Django app, or also using tuple spaces, rules engines, PDF tools, or other parts of the heavy-lifting infrastructure available on the Java platform. This is where I think DoJ provides true compelling value.

JRuby development toward scalable Web services JRuby can have unique functionality which any other Ruby implementations don’t have. In a JVM process, Jruby may host as many applications as necessary. Many users can use an application in parallel, in a scalable way. This functionality can be applied not only to Rails but also to Merb which becomes popular recently. In addition, a new project like GlassFish gem makes Ruby-based web applications scalable without much efforts. GlassFish gem But the human resource for Jruby project is very limited; only two full time comitters. It must be OSS.

How to promote toolkits? More documentation More examples – Novice examples – Extended examples Educational applications Integrating them into a web framework

Ubuntu as a favorite platform Installation of sophisticated toolkits is quite easy for novice users with Synaptics – Python + boost-python – wxWidgets, Tkinter – Java6 – Mesa – Etc. Once installed, G4py and MOMO can be used without troubles, using standard Ubuntu environments