Eclipse 4.3 Kepler ケプラーがメジャーリリース!
Eclipse 4.3 Kepler 関連 Pleiades リリース
1 年に 1 度のメジャーリリース版 Eclipse 4.3 Kepler が 6/26 にリリースされました。Maven WTP 連携強化や新機能の他、Eclipse 4.2 Juno SR2 で解消できていなかったバグやパフォーマンス問題もフィックスされています。このリリースに合わせて対応する Pleiades All in One と JStyle もリリースしました。
Pleiades All in One Eclipse 4.3 Kepler
http://mergedoc.sourceforge.jp/pleiades_distros4.3.html
JStyle プラグイン 4.3.0
http://mergedoc.sourceforge.jp/jstyle.html
Eclipse Kepler の新機能について、こちらの方が分かりやすく解説されています。
Eclipse 4.3 "Kepler"の新機能一覧
http://d.hatena.ne.jp/takahashikzn/20130625/1372153189
15 個のパフォーマンス問題が改善! Eclipse 4.2 Juno SR2 リリース
Eclipse 4.2 Juno SR2 関連リリース
重い・遅いで各地で盛大に炎上していた Eclipse 4.2 Juno のパフォーマンス問題が改善。パフォーマンス関連 15 個、その他 200 個以上のバグが修正された Eclipse 4.2 Juno SR2 が 2/22 にリリースされました。Eclipse では各メジャーバージョンの SR2 が最終安定版になります。対応する Pleiades All in One と JStyle もリリースしました。
Pleiades All in One Eclipse 4.2.2 Juno SR2
http://mergedoc.sourceforge.jp/pleiades_distros4.2.html
JStyle プラグイン 4.2.2.0 4.2.2.1 (2013/02/27 更新)
http://mergedoc.sourceforge.jp/jstyle.html
Juno SR2 で修正されたパフォーマンス問題のいくつか
Java 6 終了のお知らせ
Oracle は Java 6 一般サポート&更新を終了し、JRE に関しては Java 7 への自動アップデートを開始しました。なお、Pleiades All in One の Full Edition には 2/19 リリースの最新セキュリティアップデートを含む Java 7 および Java 6 最終版*1 が付属しています。
参考: InfoQ - OracleはJava 6のセキュリティアップデートの配布を2月で停止する
http://www.infoq.com/jp/news/2013/02/jdk6-retirement
Pleiades プラグイン 1.4.0 安定版リリース
去年 6 月の 1.3.4 リリースからの下記の累積更新を最新版として更新してきましたが、今回、安定版としてリリースしました。
Pleiades プラグイン 1.4.0
http://mergedoc.sourceforge.jp/
- ADT、CDT、CVS、Chrome テーマ、Dali、EGit、Eclipse、IvyDE、JDEclipse、PDT、PyDev、Quick Junit、Scala IDE、Subversive、WTP、m2e の差分訳追加
- Babel Juno から差分訳約 4,000 個を取り込み。取り込み後の総エントリー数: 122,000。Babel 訳で Pleiades 翻訳バリデーターが検出した翻訳エラー約 700 個修正
- [#28872] Javadoc ホバーで添付ソースより Javadoc 指定を優先する AOP 定義修正
- [#28889] EclEMMA 翻訳差分追加 (shuji_w6e)
- [#64557] E3.7 でプロジェクトのインポートでエラーになる問題を修正 (orihalcon)
- [#64645] マルチスレッド処理順の影響で -clean モードで起動してしまう場合があった問題を修正 (orihalcon)
- [#64819] Mac OSX Swing デッドロックバグ回避 (m.tanaka)
- [#65706] Juno CDT 4.2.1 で生成されるフォルダ名が訳されてしまう問題に対応
- [#65900] Paypyrus で model を翻訳しないようにパッケージ org.eclipse.papyrus 除外追加
- ディレクトリにプラス記号 (+) が含まれていると起動できない問題を修正
- ADT のようなプラグイン外からの jar ロードに対応するために AOP 動的クラスパス追加に対応
- Spring IDE プラグインで Roo コマンドが実行できない問題を修正
- pleiades-config.xml の excludePackage でパッケージ単位の AOP 除外ができるように機能追加
- 複数バージョンの同一プラグインがあると NoSuchMethodError などが発生する場合がある問題を修正
- Eclipse 3.3 以降で HTML 系コンテンツのエンコーディング自動判別に失敗して Shift_JIS になる問題を無効化
- ツールバーにウィンドウ > 設定のアイコン追加と F10 ショートカットキー割り当て
- クラス- ファイルを開くときにエラーになる問題を修正 (muimy)
- SSD 環境向け高速化
- Eclipse のプラグイン更新を検出した場合は自動的に -clean 起動するようにした
- ADT、Eclipse、MAT、PDT、PyDev、Window Builder の差分訳追加
- 起動時に無駄な処理が発生してたため修正
- Eclipse 依存になっていた部分を排除
- SWTException: Invalid thread access が発生する場合があったのを修正
- プロジェクト作成などでエラーになる問題を修正 (関連 #64557)
- 翻訳除外処理のデグレードを修正
- 進捗バー表示不具合改変クラスをキャッシュできていなかった問題を修正
- Eclipse 4.2 用の Pleiades スプラッシュ画像を追加
- Eclipse 4.2 標準スプラッシュが画像サイズ変更によるクリーン- メッセージのサイズ可変対応
- Eclipse 4.2 起動時の進捗バーがあまり進まない問題を AOP で改変修正
- 起動オプションに -Xverify:none を指定すると Eclipse Workbench クラスの動的コンパイルに失敗する問題を修正
- Pleiades 更新検出ファイルの処理失敗時のログ出力を追加
- 不要なリソースのロードを抑止
- -clean 時などで発生していた E4 マルチスレッド強化によるデッドロック (フリーズ) 問題を修正
- AOP ジョイントポイント判定の最適化により全体を高速化
- 更新マネージャーからプラグインを更新した後の次回再始動時に -clean 動作するように修正
- -clean 時、スプラッシュの下に「クリーンアップ中」メッセージを表示
- Pleiades のリソースリークを修正
- 改行やタブなどの全角記号が含まれる英語原文を訳せていない問題を修正
- 変換除外クラスキャッシュの最適化によるパフォーマンスアップ
- E4 で進捗状況ビュー、問題ビューのタブが訳されなくなっていたため対応
- マルチコア向けにパフォーマンス- チューニング
- E4 系 -clean 起動時にフリーズする場合がある問題を可能な限り修正
- E4 系で自動デフォルトエンコーディング設定ができていなかったので対応
- E4 系でバージョンが取得できず、スプラッシュが正しく表示できない問題を修正
- E4.2 Pleiades スプラッシュ画像追加
2013 年 Eclipse Kepler、そして 2014 年 Eclipse Luna (ルナ:月の女神) へ
2013/6/26 に Eclipse 4.3 Kepler がメジャーリリースされますが、その翌年 2014/6/25 にメジャーリリースされる Eclipse 4.4 のコードネームが Luna に決まりました。例年どおり、頭文字がアルファベット順、天体・神話・科学をテーマにしたもので Laila、Ladon、Laplace、Lok、Lorentz などに対して投票が行われましたが、Luna 71%、次点 Laplace 13% というような感じで圧倒的だったようです。
蛇足ですが、英語で日食を Solor Eclipse、月食を Lunar Eclipse (lunar は形容詞) と言いますが、Luna はギリシャ神話では Selene とされ、Eclipse 3.6 のコードネームだった太陽神 Helios と姉妹関係にあたります。また後に Luna と呼ばれることになる純潔の女神 Artemis の婚約者 Orion (ブラウザベースの Eclipse のコードネーム) は元々 Pleiades 7 姉妹の追っかけでした。ちなみに Juno はギリシャ神話では最高位の女神であり、Luna のいとこ、Pleiades 姉妹や超美人神 Callisto (Eclipse 3.2) のおばさんにあたります。
開発環境、言語、DB マーケット・シェア
開発環境のシェアをちょっと見てたら色々気になってきたので、色々見てみたメモ。
IDE 3 強 Eclipse, IntelliJ IDEA, NetBeans
ZeroTurnaround 調査報告 2011 〜 2012 年推移
世界各国の Java 開発チームを対象に調査を実施している ZeroTurnaround 社の 2011年、2012 年の結果を比較してみると、比率はそんなに変わってなさそうですが、全部上がっています。複数の IDE を使う開発者が増えたような感じでしょうか。
LinuxQuestions.org IDE/Web 開発エディターオブザイヤー 2012
Linux 質問コミュニティの投票結果。IntelliJ IDEA は Linux 版もありますが、エントリーに無いようです。なぜ?
[linuxquestions.org] IDE/Web Development Editor of the Year
1位 | Eclipse |
2位 | Geany |
3位 | Netbeans |
4位 | Bluefish |
5位 | Emacs |
Indeed 仕事トレンド
最後急落してると思ったら、後に出てくる他のトレンドも最後はほとんどそんな感じ。時期的なもの?
[indeed.com] Eclipse, IntelliJ, NetBeans
プログラミング言語
TIOBE インデックス 2013年2月版
おなじみの検索エンジンの検索結果を元にプログラミング言語の人気度を評価する TIOBE の最新評価結果。iPhone、iPad で Objective-C が躍進しましたがかげり?。Scala は 35 位 (0.327%) で思ったより低いです。
Indeed 仕事トレンド
C はちゃんと検索できないので除外。TIOBE はどうやって評価してるんだろう。
[indeed.com] Java, Objective-C, C++, C#, Perl, PHP, Ruby, Python, Scala, COBOL
その他色々 Indeed 仕事トレンド
AP サーバー、Servlet コンテナ
海外では WebSphere の仕事が多い?
[indeed.com] GlassFish, JBoss, WebSphere, WebLogic, "Oracle Application Server", Geronimo, Tomcat, Jetty
ブラウザ UI
フ、Flash が。HTML5 は普通になって HTML5 という言葉を使う頻度が減っていきそう。
[indeed.com] Flash, SilverLight, HTML5, JQuery, Dojo, ExtJS, YUI, MooTools,
モバイル OS
Windows Phone を調べれば何かが分かるかもしれない。
[indeed.com] iOS, Android, "Windows Phone"
データベース (RDB)
Oracle は良い買い物をした。
[indeed.com] MySQL, Postgres, DB2, "Oracle Database"
データベース (KVS、NoSQL、組み込み、etc)
ちょっとカオス。
[indeed.com] MongoDB, CouchDB, MariaDB, Redis, HBase, Cassandra, SQLite, H2, Derby
[Eclipse] Pleiades All in One の Windows 8 フォント設定対応
Pleiades All in One の自動デフォルト設定で Windows 8 の場合にフォント設定が動作していなかったため対応しました。また、下記の方がブログに記載されている件に関してソースを確認したところ、プロパティー・ファイルの編集で一部の文字が変換されないようなので作者の方へバグ報告し、別のプラグインに変更して対応しました。
プロパティファイルで「×」が文字化けする - 眩しいサインを見ただろう
http://mabushiisign.hatenablog.jp/entry/2012/11/20/010243
変更内容
4.2.1.v20121123
- Limy Eclipse プラグインに含まれるプロパティー・エディターに "×" などの 0x100 以下の文字が変換されない問題があるため、Properties Editor (http://propedit.sourceforge.jp) に変更。
- Properties Editor 拡張プラグインの Java エディター上でのプロパティーのホバー表示、プロパティー参照箇所へのジャンプ機能を追加。
- Tomcat 更新
Eclipse Pleiades All in One 4.2 Juno ダウンロード
4.2.1.v20121118
パフォーマンス比較 Cassandra、Mongodb、SQLite、H2、MySQL、Postgres
下記のようなシステムでパフォーマンスが良さげな SQLite を使用予定ですが、もっと速いものが無いか確認のため他のデータベースのパフォーマンスを計測してみました。SQL 利用前提ですが、NoSQL が圧倒的な性能を出す場合は検討する必要があるので KVS も確認しました。
- データ件数は 1 億件程度、JDBC SQL 利用可能
- INSERT、UPDATE はバッチ
- SELECT は主キーアクセス性能を重視
- 将来スケールアウトのための分散はありえるが、スタンドアロンで遅いのはだめ
データベースのパフォーマンス比較
計測したデータベース
データベース名 | タイプ | 形態 | 評判 | 計測についての備考 |
---|---|---|---|---|
SQLite | RDB | 組み込み ※2 | おもちゃ、Android標準 | JDBC操作 ※1 |
H2 | RDB | 組み込み ※2 | 組み込み最速 | JDBC操作 ※1 |
Derby | RDB | 組み込み ※2 | Java標準で付属 | JDBC操作 ※1 |
EHCache | KVS | 組み込み ※2 | OSCacheと2大巨頭 | 1万件ごとにディスク書き込み設定 |
Redis(Jedis) | KVS | サーバー ※4 | 爆速 | Jedis API 操作 |
Mongodb | KVS | サーバー ※4 | 高パフォーマンス | Mongodb 標準 API 操作 ※3 |
Cassandra | KVS | サーバー | 大手導入事例多数、廃止も多数 | JDBC操作 (AutoCommit のみ可能) |
MySQL(MyISAM) | RDB | サーバー | サーバ型非トランザクションRDB最速 | JDBC操作 ※1 |
MySQL(InnoDB) | RDB | サーバー | サーバ型トランザクションRDB最速 | JDBC操作 ※1 |
PostgreSQL | RDB | サーバー | MySQLと異なりGPLじゃない | JDBC操作 ※1 |
※1 JDBC 操作に関して INSERT は 1 万件ごとにコミット、SELECT は主キー指定で 1 件ずつ全件取得
※2 組み込みモード (ローカルファイル永続化) のみ計測、インメモリモードやサーバーモードは未計測
※3 全 INSERT 後の ensureIndex によるインデックス作成時間が計測結果に含まれる
※4 遅延書き込み (非同期書き込み) *1
計測結果
環境 CPU Core2 Duo 2GH 2GHz*2、メモリ 4GB、Windows XP 32bit*3、HDD (TOSHIBA MK8052GSX)*4、しょぼめのノートパソコン
データ 主キー:数値、値:文字列、レコード長:約 200 byte
スレッド数 1
線形的増加と指数関数的増加、臨界点
データベースの処理数に対する処理時間は、上記結果の MySQL に見られるような線形的増加 (リニア、直線的) に増加するパターンと、Cassandra のように指数関数的 (雪ダルマ式) に増大するパターンがあります。また、線形的増加から指数関数的増加に移行する臨界点や動作不能になる臨界点がある場合が多いです。1 万件での処理時間はこうだから 1 億件の予想処理時間はその 1 万倍というような情報をたまに見かけますが、件数が増大するほど線形的増加ではないほうが多いと思います。
SQLite が予想以上に他を圧倒し高速
SQLite が INSERT、SELECT とも予想以上に他を圧倒し高速でした。計測結果に示すとおり 1 億件程度のデータ (データファイルサイズは 1.8 GB でした) なら大丈夫そうです。H2 のサイトに H2 が最速とするパフォーマンス比較 (H2) がありますが SQLite はトランザクションがテストされていないという理由で比較されていません。ちなみに実際には SQLite はトランザクションをサポートしていて、テストに関しても SQLite 本体コード 6万7000行 に対しテストコードは 4567万8000行 (publickey) だそうです。古い情報ですが、SQLiteを使うべき10の理由と5つのデメリット (CAP-LAB テクニカル) が色々参考になります。
SSD で試してみたところ、1 億件 INSERT 647秒、1 億回 SELECT 383秒 でした。さすがに速い。SSD 環境は CPU i5 2.4GH、メモリ 8GB、Windows 7 64bit*5、SSD (TOSHIBA THNSNC128GMMJ)*6、これもノートパソコンです。
件数が増えると EHCache が想定以上に遅い
EHCache は 1 万件取得で最速ですが、件数が増えると組み込み RDB の SQLite や H2 より遅いのは良い?にしても、クライアント・サーバー型 KVS の Mongodb や Redis より総合的に少し遅いのは予想外でした。overflowToDisk の設定にもよると思いますが、知らずに H2 や Mongodb のキャッシュとして EHCache を使ってまいそうです。すべてディスクに永続化するように設定していたのですが、100万件テストでは登録したデータを取得しようとしたときに欠落している場合があるため計測しませんでした。ところでロゴを見て気づいたのですが EHCache が回文になっているのを今初めて知りました。
Mongodb がクライアント・サーバー型としては登録性能に優れている
最速の SQLite と比較すると登録は 6 倍かかり、取得は 20 倍かかりますが、クライアント・サーバー型としては最も登録性能に優れています。ただし、分散環境ではデータがときどき消える、マルチコアでスケールしない (InfoQ)、などに注意する必要があります。もちろん、これらの問題は将来解消されるかもしれません。
NoSQL、KVS が終焉
NoSQL が終焉したと言われて久しいですが、Google のインフラ基盤や Facebook の HBase (Hadoop) で HBase (Hadoop データベース)*7 がバリバリ使われていて、Mixi では永続化機能付き memcached とも言える TokyoTyrant が使用され、DeNA では MySQL に HandlerSocket を組み込み NoSQL を実現しています。必要な場面があるので今後も NoSQL や KVS が無くなることはなく、逆に RDB も衰退することはありません。Twitter は今でも MySQL + memcached ですし、GAE では MySQL も用意されています。また、NoSQL に対して SQL が遅いというアンチテーゼとして、Postgres の設計者による分散インメモリ RDB の VoltDB が登場しています。
業務システムから見ると SQL はそのままでスケールアウトしたいという要望に単純な NoSQL や KVS は合致しません。元々 RDB がスケールアウトによりリニアにスケールしない問題や耐障害性を解決するために Google の BigTable などにインスパイアされ登場したのが分散 KVS ですが、現在は RDB に NoSQL や KVS の要素が取り込まれています。例えば、MySQL 5.6 では memcached や HandlerSoclet などの概念が取り込まれ SQL なしで高速アクセス可能になっています。また MySQL Cluster や Oracle Exadata は分散 KVS と同じようにリニアにスケールアウト可能になっており、Postgres も 32 コア CPU 対応などスケールアップ可能になっています。
追加 2012/10/19
計測結果についての補足
計測結果はあくまでも私が必要な環境と条件の計測結果であり、id:matsumoto_r さんがおっしゃられているとおりデータベースそのものの優劣を示しているものではありません。並行アクセスしたらとか、設定変えたらとか、たくさんご意見いただきましたが、もちろん、負荷条件を変えたりそれぞれ環境に合わせてチューニングすれば結果は変わると思います。今回の想定システムでは並行アクセスはほぼ発生せず意味がないのでマルチスレッドでの計測はせず、シングルスレッドでのデータ永続化の基本性能を確認するために実施しました。並行処理が得意(前提)とされるデータベースをシングル構成で計測に追加したのは差を確認するためです。並行性能の情報はたくさん公開されていると思いますが、ご自分の環境に合う方法で計測していただければと思います。
なお、ソフトウェアやドライバはすべて最新安定版、設定はデフォルトです。ただし、全データのディスク同期が前提の計測であるため、EHCache はインメモリではなくディスク永続化モードです。ちなみに SQLite はもう少し触ってみたところ Beta 版にすると 20% 高速化、非同期モードにするとさらに 10% 高速化しました。
計測になぜ Oracle が含まれてないの?
私は臆病者なので良い結果を出さないと Oracle に怒られる気がするからです。OTN ライセンスに下記の条項が含まれています。
オラクルの事前承諾なく、プログラムのベンチマークテストの結果を開示すること。
OTN開発者ライセンス
蛇足ですが、DB2 は設定を完璧にして最新パッチをあてて最高性能を出さないと怒られるかもしれません。
(A) ベンチマーク・テストで使用した方法 (例えば、ハードウェアおよびソフトウェアのセットアップ、導入手順および構成ファイル) を公開し、
SLA - L-JWOG-6K4JSQ
(B) 「プログラム」に対する IBM または IBM 製品を提供する第三者 (以下「第三者」といいます。) から提供される最新の適用可能な更新、パッチ、修正が適用された所定の稼働環境で 「プログラム」を実行してベンチマーク・テストを行い
(C) 「プログラム」の資料ならびに IBM がサポートする「プログラム」用の Web サイトで提供されているすべてのパフォーマンス・チューニングおよび最良の方法に従うこと
計測ソース*8
今回の計測対象のメインとなる JDBC のソースはこちらになります。INSERT のあとの SELECT なのでキャッシュ云々の話もありますが、それも含めて各データソースに対して同じ操作をしています。SQLite のみ Class.forName しているのはドライバがサービスプロバイダーフレームワークに対応していないためです。(bitbucket リポジトリの最新ソースでは 2012/09 対応)
package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import org.junit.After; import org.junit.Test; public class JdbcTest { @Test public void sqlite() throws Exception { Class.forName("org.sqlite.JDBC"); con = DriverManager.getConnection("jdbc:sqlite:test.sqlite3"); Statement st = con.createStatement(); executeUpdate(st, "drop table if exists person"); executeUpdate(st, "create table person (id integer primary key, name string)"); executeQuery(); } @Test public void h2() throws Exception { con = DriverManager.getConnection("jdbc:h2:testh2", "sa", ""); Statement st = con.createStatement(); executeUpdate(st, "drop table if exists person"); executeUpdate(st, "create table person (id integer primary key, name varchar)"); executeQuery(); } @Test public void derby() throws Exception { con = DriverManager.getConnection("jdbc:derby:derby;create=true"); Statement st = con.createStatement(); executeUpdate(st, "drop table person"); executeUpdate(st, "create table person (id int primary key, name varchar(200))"); executeQuery(); } @Test public void mysql_myisam() throws Exception { mysql("MyISAM"); } @Test public void mysql_innodb() throws Exception { mysql("InnoDB"); } private void mysql(String engine) throws Exception { con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", ""); Statement st = con.createStatement(); executeUpdate(st, "drop table if exists person"); executeUpdate(st, "create table person (id integer primary key, name varchar(200)) engine = " + engine); executeQuery(con.getMetaData().getDatabaseProductName() + "(" + engine + ")"); } @Test public void postgres() throws Exception { con = DriverManager.getConnection("jdbc:postgresql:postgres", "postgres", "postgres"); Statement st = con.createStatement(); executeUpdate(st, "drop table if exists person"); executeUpdate(st, "create table person (id integer primary key, name varchar)"); executeQuery(); } @Test public void cassandra() throws Exception { con = DriverManager.getConnection("jdbc:cassandra://localhost:9160/test"); Statement st = con.createStatement(); executeUpdate(st, "drop table person"); executeUpdate(st, "create table person (id int primary key, name text)"); executeQuery(); } // 共通メンバー ------------------------------------------- private Connection con; private static final int COUNT = 10000 * 10; private static final String DATA = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"; @After public void after() throws Exception { if (con != null) { con.close(); } } private void executeUpdate(Statement st, String sql) { try { st.executeUpdate(sql); } catch (Exception e) { System.out.println(e.toString()); } } private void executeQuery() throws Exception { executeQuery(con.getMetaData().getDatabaseProductName()); } private void executeQuery(String databaseName) throws Exception { boolean isCassandra = databaseName.contains("Cassandra"); boolean isAutoCommit = isCassandra; System.out.printf("%-14s", databaseName); if (!isAutoCommit) { con.setAutoCommit(false); } long insertStart = System.currentTimeMillis(); PreparedStatement insertPs = con.prepareStatement("insert into person (id, name) values(?, '" + DATA + "')"); for (int i = 0; i < COUNT; i++) { insertPs.setInt(1, i); insertPs.executeUpdate(); if (!isAutoCommit && i % 10000 == 0) { con.commit(); } } if (!isAutoCommit) { con.commit(); } double insertSec = (double) (System.currentTimeMillis() - insertStart) / 1000; long selectStart = System.currentTimeMillis(); PreparedStatement selectPs = con.prepareStatement("select * from person where id = ?"); for (int i = 0; i < COUNT; i++) { selectPs.setInt(1, i); selectPs.executeQuery().next(); } double selectSec = (double) (System.currentTimeMillis() - selectStart) / 1000; String countSql = "select count(1) from person"; if (isCassandra) { countSql += " limit 100000000"; } ResultSet rs = con.createStatement().executeQuery(countSql); rs.next(); logProcessTime(rs.getInt(1), insertSec, selectSec); } private void logProcessTime(long count, double insertSec, double selectSec) { System.out.printf("%4d万件 ", count / 10000); System.out.printf("%7.2f秒 ", insertSec); System.out.printf("%7.2f秒", selectSec); System.out.println(); } }
黒背景 Eclipse Dark Juno でクールにキメる
重要なのは開発手法でも言語でもフレームワークでもない。クールにキメて今日から君もモテリプス。
Black Eclipse
上のイメージの黒を基調としたダーク系 Eclipse に必要なプラグインと設定方法です。
必要なプラグイン
- Eclipse Color Theme プラグイン / 色テーマ - Pleiades All in One 同梱
- Dark Juno - zip ファイルをダウンロード
- Moeclipse - Java エディター背景画像設定
- eclipse.org Lightweight CSS エディター - Eclipse マーケットプレースから CSS で検索
- eclipse.org CSS スパイ - (必須ではない) Eclipse マーケットプレースから CSS で検索
設定方法
一般 > 外観 > 色テーマ で「Pastel」を選択。(どれでもいい)
一般 > 外観 のテーマで「Dark Juno」を選択。
Lightweight CSS エディターでビュータイトルの font-size 12 を 9 に変更。
これは Dark Juno プラグインに含まれる CSS ファイルを直接書き換えるのと同じです。
Moeclipse で Java エディター背景に適当な画像を設定
CSS スパイ。クイック・アクセスから CSS を入力し、CSS スパイを開く で開きます。
ウィジェットを選択すると、実際の部品が赤枠で囲まれ、プロパティーを変更すると見た目を確認できます。
このプラグインは必須ではありませんが、CSS を細かくカスタマイズする場合は便利です。
Stylish Eclipse
黒系じゃなく普通の感じでいいけど、Eclipse Juno のデフォルト・テーマはビューの間が広くてちょっとかっこ悪い、かといって、XP テーマに戻すのもなんだかあれ。という場合は Eclipse 4 Chrome Theme がお勧めです。設定画面からビュー間を調整できます。ちなみに Chrome という名前はブラウザの Google Chrome は無関係です。
必要なプラグイン
設定方法
一般 > 外観 > Chrome テーマ の右上の矢印からのプリセットが選択できます。ビューの幅を狭くするにはマニュアルを選択し、サッシュ幅を最小にします。細いサッシュを選択すると、Eclipse 3 系と同じような外観になります。
Eclipse Juno デフォルト・テーマ
Chrome テーマ > Chrome Modern - マニュアル、サッシュ幅最小
Chrome テーマ > Hello Kitty - マニュアル、サッシュ幅最小
Chrome テーマ > Chrome Modern - 細いサッシュ
Chrome Theme の CSS は Xtend で動的に生成されているため、Lightweight CSS エディターで編集することはできません。
フォントにこだわる
無料公開された Source Code Pro や MeiryoKe_Console を使うとさらにモテリプスだ。
Source Code Pro
[速報] ソースコードを表示するためのフォント「Source Code Pro」をアドビがオープンソースで無料公開
MeiryoKe_Console
dai1741's blog: Windows 7のEclipseのフォントをきれいなものにする