Jythonプログラミング

>>> from java.lang import *

Jython(じゃいそん)はあなたのJavaプログラムに 「やわらかさ」を与えるライブラリです。
わずか数行書き足すだけで、このスペースではとても語り尽くせない
様々な「Pythonのよさ」を取り込むことができます。 そして何一つ機能を失いません。
既存のJavaのコードをPythonで書き直す必要なんかありません。
何も失わずに、二つの言語の「いいとこどり」ができるのです。

正誤情報

Jythonプログラミング 追加情報」で公開しています。

著者紹介

西尾泰和(にしお ひろかず) http://www.nishiohirokazu.org/
サイボウズ・ラボ株式会社に勤務。 プログラマのためのコロシアム「どう書く?org」をβ公開中。
2005年、Lightweight Language Day and Nightにて出された 「計算機を作れ」というお題に対して、Jythonで「関数を定義できる関数電卓」を作成。
2006年、Lightweight Language Ringにて「ネットワーク通信をしてじゃんけんを戦う エージェントプログラムを作れ」というお題に対して Pythonのワンライナーで参戦。(動画)
2007年、Lightweight Language SpiritにてJython担当としてパネルディスカッションに参加、 Jythonでフィボナッチ数列を曲にするデモなどを行う。

はじめに

本書の「はじめに」を転載します。

みなさんはどういう気持ちでこの本を手に取ったのでしょうか?どういう知識を持っていて、どういう知識を得たいと思っているのでしょうか?

みなさんのニーズを聞いてから、それに応えることができればいいのに…。しかし、書籍でそれをやるのは難しいです。しかたがないのでこちらで決めました。この本の最大の目的は「なるべく多くの人に新しい視点を提供すること」です。

すべてのものには長所と短所があります。Javaはとてもかたい言語です。きっちりかっちりした言語です。もちろんこれは長所です。しかし、短所でもあります。一方、Pythonはとてもやわらかい言語です。のんびりらくちんな言語です。もちろんこれも長所です。しかしやはり短所でもあります。

一つの言語だけしか知らないのでは、なにが長所でなにが短所かわかりません。何が本質でなにが枝葉なのかわかりません。複数の言語を学んで比較することで初めて、なにがプログラミングの本質であり、なにが特定の言語の特徴なのかが見えてきます。ある問題をJavaで解決する方法を知っているとしましょう。それはJavaだからできることでしょうか?それとも、他の言語でもできることでしょうか?はたまた、Javaの短所のせいでしかたなくその方法を使うだけで、別の言語ではもっとエレガントに解決できるのでしょうか?言語はそれぞれ特徴が違います。Javaはソースコードをコンパイルしてから実行しますが、Pythonでは対話的な実行ができます。Javaは宣言で変数を作りますが、Pythonは代入で変数を作ります。Javaではクラスが必須ですが、Pythonでは必須ではありません。Javaは単一継承に制限されていますが、Pythonでは多重継承ができます。Pythonを学ぶことはあなたの視野を大きく広げることになるでしょう。

Jythonのいいところは「別の言語を勉強したけど、でも今作っているJavaプログラムをPythonに移植するのはコストが高いな」といういいわけが使えないところにあります。Pythonを学んで、たとえば「対話的実行を自分のソフトでも使いたいなぁ」と思ったのなら、6章を参考にして対話的コンソールを埋め込みましょう。既存のJavaプログラムは捨てないで、数行書き足すだけで対話的に実行ができます。この本は「Javaを捨ててPythonに乗り換えろ」という本ではありません。「JavaオンリーよりJava + Pythonがいいよ」という本なのです。

この本の目的は、なるべく多くのJavaプログラマにPythonを知ってもらい、視野を広げてもらうことにあります。「なるべく多くの人に」という目的を果たすために、Python使いでもJavaのギークでもなく、Javaを始めて1年未満くらいの人をターゲットとして想定しました。ギークには物足りないかもしれません。すみません。JavaよりPythonがメインの方にも物足りないかもしれません。もっとJythonのAPIとかの解説が欲しいかもしれません。すみません。他にもいろいろと至らない点があるかと思います。すみません。

この本がみなさんの役に立つことを祈っています。

著者へのコンタクト

jybook「あっとまーく」nishiohirokazu「どっと」org へお気軽にお送り下さい。 すぐにお返事を差し上げられるとは限らないことをあらかじめおわびします。