All articles, tagged with “java”

How to run Byteflow blog engine on Jython

I’m already write some articles about problems in running Trac on Jython. Today i describe successfully installation of popular Django-based blog engine Byteflow on Jython.

Step 1: Install Java, Jython, Django

To setup Byteflow on Jython you must install JDK, and Jython compiler. I’m recommend to use Sun JDK version 1.6 and latest Jython from 2.5 branch (Now latest version of Jython is 2.5b0 and final 2.5 version will released soon).

Note: if you install Jython on computer without graphical interface you must run console version of installer: $java -jar jython_installer-2.5b0.jar --console

otherwise you get error:

java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it.

Note: After Jython installation you must set executable flag on jython binary: $chmod +x <path to Jython home>/bin/jython

After it you need to install Django. Django from version 1.0.0 work out of box with Jython, therefore you can get latest version of 1.0.x branch (Now latest version of Django is 1.0.2).

$wget http://www.djangoproject.com/download/1.0.2/tarball/ $tar xjvf Django-1.0.2-final.tar.gz $cd Django-1.0.2-final $jython setup.py install

Step 2: Install Byteflow requirements Byteflow depends on some libraries which not distributed with Jython, therefore you must download and install it manually.

Install database wrapper: Jython can’t use standard DBAPI-2.0 modules because they use low level C-implementation of driver, instead it use JDBC database drivers and zxjdbc wrapper.

You must download and install django-jython module which provide Django database wrappers for jdbc drivers: $svn co http://django-jython.googlecode.com/svn/trunk/ django-jython $cd django-jython $jython setup.py install

Currently it support only postgresql and sqlite3.but work on other databases (including mysql) in progress.

Also you must download appropriate jdbc driver, for Postgresql you must to download it from http://jdbc.postgresql.org/

Install BeautifulSoup: You must download and compile BeautifulSoup module for Jython: $wget http://www.crummy.com/software/BeautifulSoup/download/BeautifulSoup.tar.gz $tar xzvf BeautifulSoup.tar.gz $cd BeautifulSoup-3.0.7a $jython setup.py install

Install ElementTree: Byteflow use ElementTree ant you need to install in by standard way: $svn checkout http://jython-elementtree.googlecode.com/svn/trunk elementtree $cd elementtree $jython setup.py install --stdlib

Install OpenID: Download and install python-openid version2: $wget "http://openidenabled.com/files/python-openid/packages/python-openid-2.2.1.tar.bz2" $jar xzvf python-openid-2.2.1.tar.bz2 $cd python-openid-2.2.1 $jython setup.py install

Step 3: Download, configure and run Byteflow: You can download Byteflow from mercurial repository and follow simple installation guide: $hg clone http://hg.piranha.org.ua/byteflow/ $cd byteflow

After this you must change some configuration values in settings_local.py according of you preferences. You must change value in DATABASE_ENGINE field to use django-jython wrapper: DATABASE_ENGINE = 'doj.backends.zxjdbc.postgresql' # variants: mysql, sqlite3

Also you must change value of CAPTCHA variable — set recaptcha if you have account on recaptcha or disable captcha by specify empty value. You must do this because captcha module depends on PIL which is not ported to Jython.

Now you are ready to create Byteflow database. You need specify path to jdbc jar file in classpath because otherwise Jython can’t resolve this: $export JYTHON_HOME=<path to Jython home> $java -classpath $JYTHON_HOME/jython-complete.jar:<path to dowloaded jdbc jar>/postgresql-8.3-604.jdbc3.jar -Dpython.home="$JYTHON_HOME" org.python.util.jython manage.py syncdb

After this you can finally run Byteflow instance with django internal http server: $export JYTHON_HOME=<path to Jython home> $java -classpath $JYTHON_HOME/jython-complete.jar:<path to dowloaded jdbc jar>/postgresql-8.3-604.jdbc3.jar -Dpython.home="$JYTHON_HOME" org.python.util.jython manage.py runserver

Reference:
 Distributions:

Modules:

Articles:

Trac on Jython

Some days ago i start discussion about current status of Python frameworks on Jython (only Russian version available). In short summary — many people work on this problem and Django was first.

Now i want to talk about Trac on Jython status. Google don’t provide any useful results on query about Trac on Jython, therefore i start more detailed research.

If you try to run Trac 0.11.1 on Jython you need to run all Trac dependencies, which includes Setuptools (already worked fine on Jython) and Genshi. Main problem there is Genshi library which dependence on xml.parsers.expat which in python bindings to native expat library. This require writing JNI wrapper for expat library. Also Genshi use some low-level functions of CPyhton like: AST rewriting, and CPython bytecode generation. (Some discussions about Genshi on Jython).

Genshi also used in TurboGears 2 framework and some people work on Genshi porting to Jython. This work was started as GSoC 2008 project: Improving TurboGears2 support on Jython. You can read some status reports about progress: Weekly status report, TG2 (already partly working) on Jython — status update,

Build OpenJDK7 under Debian Lenny — Repositore clone

I’m start series of articles devoted to download, build and install latest version of OpenJDK 7 under Debian Lenny. And in first article i want to describe how we can get latest source code from official mercurial repository.
At first stage we must read Repository Guide and install mercurial >= 0.9.4. Lenny already include mercurial 0.9.5 (1.0 version can be included in release). Also i create separate dir for openjdk repository in /opt/repos/mercurial/openjdk/openjdk7
Please be attentive, to proper clone openjdk repository you must use fclone commant (this command provided by extension called forest and not included in official mercurial package and Debian repository). Therefore you must manual install this extension:

     mkdir -p /opt/repos/mercurial/mercurial/forest/
     cd /opt/repos/mercurial/mercurial/forest/
     hg clone http://hg.akoha.org/hgforest/
     cp hgforest/forest.py /usr/share/python-support/mercurial/hgext/
   

And the configure your .hgrc to enable the extension by adding following lines:

     [extensions]
     hgext.forest=
     # or, if forest.py is not in the hgext dir:
     # forest=/usr/share/python-support/mercurial/hgext/forest.py
   

After this we are ready to clone openjdk repository:

     mkdir -p /opt/repos/mercurial/openjdk/openjdk7
     cd /opt/repos/mercurial/openjdk/openjdk7
     hg fclone http://hg.openjdk.java.net/jdk7/jdk7
   

This action require around 70 Mb and around 10-20 minutes of time. But after this you would have own copy of main openjdk development tree.
ps: You need fclone because openjdk repository use nested mercurial trees inside main tree. If you try to use clone instead of fclone you dowload only some documentation files without source code.

Added on 23 October 2008: Now OpenJDK 6 is official part of Debian repository: openjdk-6