Download presentation
Presentation is loading. Please wait.
Published byDina Miller Modified over 8 years ago
1
Unification and new developments of Geant4 (G)UI toolkits for educational applications New Geant4 Extensions Hajime Yoshida Shikoku University 2008 September 2, LAPP, Annecy
2
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
3
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.
4
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
5
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
6
Sun Gets Serious About Python Posted by Gavin Terrill on Jul 08, 2008 11: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
7
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?
8
Jython2.5α1+
10
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;
11
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 ?
12
Python Web Framework on the JVM Posted by Craig Wickesser on Jan 19, 2008 08: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 2.2.1. 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
13
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 2.5 - 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.
14
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.
15
How to promote toolkits? More documentation More examples – Novice examples – Extended examples Educational applications Integrating them into a web framework
16
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.