どちらか一方に切り替えて、どちらか一方を誓う人から聞いたことがあります。
Eclipseの大ファンですが、IntelliJを試す時間がなかったので、「元日食主義者」であるIntelliJユーザーから、EclipseではできないIntelliJでできるいくつかの特定のことを聞きたいと思います。
注:これは主観的な質問ではなく、IDEの聖戦になることを意図したものでもありません。フレームベイトの回答に反対票を投じてください。
どちらか一方に切り替えて、どちらか一方を誓う人から聞いたことがあります。
Eclipseの大ファンですが、IntelliJを試す時間がなかったので、「元日食主義者」であるIntelliJユーザーから、EclipseではできないIntelliJでできるいくつかの特定のことを聞きたいと思います。
注:これは主観的な質問ではなく、IDEの聖戦になることを意図したものでもありません。フレームベイトの回答に反対票を投じてください。
回答:
クリックしたオブジェクトが定義されている場所に移動するCTRLキーを押しながらクリックすると、JavaコードのJavaクラスと変数だけでなく、Spring構成(クラス名、プロパティ、またはBean名をクリックできます)、Hibernate(プロパティ名またはクラス、または含まれているリソースをクリックできます)。Javaクラスから、SpringまたはHibernate Beanとして使用されている場所にワンクリックで移動できます。含まれているJSPまたはJSTLタグをクリックしても機能します。JavaScript変数または関数をCtrlキーを押しながらクリックすると、それが定義されている場所に移動するか、他の.jsファイルやHTMLまたはJSPのJSコードを含む複数の場所がある場合はメニューが表示されますファイル。
HSQL式、Hibernate構成(クラス、プロパティ、DB列名を含む)、Spring構成でのオートコンプリート
<property name="propName" ref="<hit CTRL-SPACE>"
そして、そのプロパティに注入できるBeanのリストが表示されます。
Javaコードでの非常にスマートなオートコンプリート:
interface Person {
String getName();
String getAddress();
int getAge();
}
//---
Person p;
String name = p.<CTRL-SHIFT-SPACE>
また、getName()、getAddress()、およびtoString()(タイプによってのみ互換性がある)のみが表示され、より関連性の高い名前があるため、getName()がリストの最初に表示されます。まだEAPである最新バージョン8には、よりスマートなオートコンプリートがあります。
interface Country{
}
interface Address {
String getStreetAddress();
String getZipCode();
Country getCountry();
}
interface Person {
String getName();
Address getAddress();
int getAge();
}
//---
Person p;
Country c = p.<CTRL-SHIFT-SPACE>
そしてそれは静かにそれをオートコンプリートします
Country c = p.getAddress().getCountry();
JavaScriptのスマートオートコンプリート。
function Person(name,address) {
this.getName = function() { return name };
this.getAddress = function() { return address };
}
Person.prototype.hello = function() {
return "I'm " + this.getName() + " from " + this.get<CTRL-SPACE>;
}
そして、プロジェクト内の他のJSオブジェクトにあるget *メソッドに関係なく、getName()とgetAddress()のみが表示され、this.getName()をCtrl キーを押しながらクリックすると、これが定義されている場所に移動します。プロジェクトには他にもいくつかgetName()関数があります。
<script src = ""、<img src = ""などのファイルへのパスでオートコンプリートとCtrlキーを押しながらクリックすることについて言及しましたか?
HTMLタグ属性のオートコンプリート。HTMLタグのスタイル属性のオートコンプリート(属性名と値の両方)。クラス属性のオートコンプリート。
<div class = "<CTRL-SPACE>と入力すると、プロジェクトで定義されているCSSクラスのリストが表示されます。1つを選択してCtrlキーを押しながらクリックすると、定義されている場所にリダイレクトされます。
最新バージョンには言語インジェクションがあるため、カスタムJSTLタグには通常JavaScriptが含まれており、その内部のJavaScriptが強調表示されることを宣言できます。
<ui:obfuscateJavaScript>function something(){...}</ui:obfuscateJavaScript>
Javaクラスまたはメソッドの使用状況を検索を使用すると、Javaクラスだけでなく、Hibernate、Spring、JSP、およびその他の場所を含む、それが使用されている場所が検索されます。Rename Method refactoringは、Javaクラスだけでなく、コメントを含むすべての場所でメソッドの名前を変更します(コメント内の文字列が実際にメソッド名であるかどうかは確認できないため、尋ねられます)。そして、同じ名前の別のクラスのメソッドがあったとしても、それはあなたのメソッドだけを見つけます。優れたソース管理統合(SVNはチェンジリストをサポートしていますか?IDEAはすべてのソース管理に対してそれらをサポートしています)、変更を含むパッチを作成して、コミットせずに他のチームメンバーに変更を送信する機能。
デバッガーのウォッチウィンドウでHashMapを見ると、論理ビュー(キーと値)が表示されます。前回Eclipseでそれを行ったとき、ハッシュと次のフィールドを持つエントリが表示されていました。実際にはHashMapをデバッグしていないので、見たいだけです。それの内容。
編集時にSpringとHibernateの構成を検証するので、サーバーを再起動してクラス名のスペルを間違えたり、Spring cfgが無効になるようにコンストラクターパラメーターを追加したりする必要はありません。
前回試したところ、Windows XP x64でEclipseを実行できませんでした。
そして、それはあなたにperson.nameまたはperson.addressを提案します。person.nameをCtrl キーを押しながらクリックすると、PersonクラスのgetName()メソッドに移動します。
Pattern.compile("");
そこでput \\と入力し、CTRL-SPACEを押して、正規表現に何を入れることができるかについての役立つヒントを参照してください。ここで言語インジェクションを使用することもできます-文字列パラメーターを受け取る独自のメソッドを定義し、IntelliLangオプションダイアログでパラメーターが正規表現であることを宣言すると、そこでオートコンプリートも提供されます。言うまでもなく、これは正しくない正規表現を強調しています。
Eclipseに存在するかどうかわからない機能はほとんどありません。しかし、少なくともEclipseを使用するチームの各メンバーは、いくつかのマージツールを使用して、ローカルの変更をソース管理(通常はWinMerge)からの変更とマージします。必要ないので、IDEAにマージするだけで十分です。3回のクリックでソース管理のファイルバージョンのリストを確認でき、さらに3回のクリックで以前のバージョン、または以前のバージョンと現在のバージョンを比較して、場合によってはマージできます。
これにより、WEB-INF\lib
各ファイルを個別に選択することなく、フォルダー内のすべての.jarが必要であることを指定できるため、誰かがそのフォルダーに新しい.jarをコミットすると、自動的にそれが選択されます。
上記はおそらくそれの10%です。私はMaven、Flex、Swing、EJB、および他の多くのものを使用していないので、それがどのように役立つかはわかりません。しかし、そうです。
Eclipseではなくintellijを使用する理由は1つだけです。使いやすさです。
デバッグ、リファクタリング、オートコンプリートなど、Intellijは、一貫したキーバインディング、検索に使用できるオプションなどを使用する方がはるかに簡単です。機能的には、IntellijがEclipseに追いつくのが難しい後者には、intellijよりはるかに多くのプラグインがあり、簡単に拡張できます。
おそらく、何ができるか、できないかではなく、どのように行うかです。
たとえば、どちらにもプロジェクト、クラスパス、出力、構造などのドックパネルで囲まれたエディターがあります。ただし、アイデアを入力し始めると、これらすべての折りたたみが自動的にコードに集中できるようになります。日食では、これらのすべてのパネルが開いたままになり、エディター領域が非常に小さくなり、表示可能な領域全体の約1/5になります。したがって、マウスをつかんでクリックし、これらのパネルを最小化する必要があります。これを一日中行うことは、日食で非常にイライラする経験です。
まったく逆のことが、ビュー出力ウィンドウで起こります。Ideaでプログラムを実行すると、出力ウィンドウ/パネルが表示され、プログラムが最小化されていても、プログラムの出力を確認できます。日食では、もう一度マウスをつかんで出力タブを探し、クリックしてプログラムの出力を表示する必要があります。これは、出力ウィンドウ/パネルが他のすべてのウィンドウと同様に別のウィンドウであるためですが、アイデアではそれが扱われます特別な方法:「ユーザーがプログラムを実行したい場合、そのプログラムの出力を見たいと思う可能性が非常に高いです!」私が書いたときはとても自然に見えますが、この基本的なユーザーインターフェイスの概念ではEclipseは失敗します。
おそらくEclipseのこれにショートカットがあります(編集中に出力ウィンドウを自動的に非表示にし、プログラムの実行時にそれを自動表示します)。ただし、他の何十もの機能として、アイデアは少し多く、フォーラムやオンラインヘルプなどでショートカットを探す必要があります。ナチュラル"。
これは、オートコンプリート、ワードラップ、クイックドキュメントビューなど、ほとんどすべての機能で繰り返すことができます。ユーザーエクスペリエンスは、EclipseよりもIdeaの方がはるかに楽しいと思います。そして、モットーが実現します「喜んで開発する」
Eclipseはより高速な大規模プロジェクト(+300 jarおよび+4000クラス)を処理し、IntelliJ Idea 8がこれに取り組んでいると思います。
もちろん、これはすべて主観的なものです。ユーザーエクスペリエンスをどのように測定できますか?
Idea 8.0には、ctrl+shift+space次のオートコンプリートを実行する素敵なx 2があります。
City city = customer.<ctrl-shift-space twice>
解決する
City city = customer.getAddress().getCity();
ゲッター/セッターのレベルをいくつでも。
「クリップボードと比較」を忘れないでください。
IntelliJでいつも使用していて、Eclipseでは同等のものがないもの。
新しいAndroid Studioのため、IntelliJに切り替えようとしました。しかし、私は今非常に失望しています。私はEclipseとCode Recommandersプラグインを使用しています。Eclipseが非常に優れている理由を簡単に示します。
新しいを作りたいSimpleTimeZone
。SimpleTimeZone
引数のないコンストラクターはありません。
Ctrl + Space Eclipseで
Ctrl + Space IntelliJ
IntelliJでは、どのようなコンストラクターSimpleTimeZone
があるかについての情報は得られません。
EnterEclipseの後
以前に選択したコンストラクタに、事前定義された変数名を入力します。そして、私はすべての議論のタイプを見ることができます。コードリコマンダーを使用すると、Eclipseは現在のスコープで以前に定義された変数の型によって適切なコンストラクターを推測し、コンストラクターにこれらの変数を入力します。
EnterIntelliJの後は何も起こりません。空のコンストラクターを取得します。Ctrl + P期待される議論を見るために、私は急がなければなりません。
メソッドにカーソルがあるCTRL+SHIFT+Iと、メソッドの実装がポップアップ表示されます。メソッドがメソッドの場合、上interface
矢印と下矢印を使用して実装を循環できます。
Map<String, Integer> m = ...
m.contains|Key("Wibble");
どこ| (たとえば)カーソルがある場所です。
IntelliJには、かなり高度なコード検査があります(FindBugと同等ですが異なります)。
IntelliJを使用している場合は、FindBugsプラグインが欠けています(Eclipse / FindBugs統合は非常に優れています)。
ここにのIntelliJでサポートされているCodeInspectionsの公式のリストです
編集:最後に、IntelliJのfindbugsプラグインがあります。それはまだ少しベータ版ですが、コード検査とFindBugsの組み合わせは素晴らしいです!
私が定期的に使用する1つのことは、ブレークポイントを設定することですが、それが何をするかを制御します。(私の最後の仕事では、ほとんどの人がEclipseを使用していました。Eclipseでこれを行う方法を誰も見つけられなかったことに驚いたのを覚えています。)
たとえば、ブレークポイントを実際に停止せずに、メッセージをコンソールに記録することができます。つまり、「System.out.println(...)」でコードを散らかしてから再コンパイルする必要はありません。
System.out.println("here"); false
印刷したいが壊さないようにすることができます(最後のステートメントは、壊すべきかどうかを決定するブール式です)
アイデアがはるかに簡単な方法で解決するものはたくさんあります。または同等のものはありません。
オートコンプリートアクション:ctrl+shift+aキーの組み合わせを覚えていなくても、キーボードからアイデアアクションを呼び出すことができます... gnome-doやWindowsでの起動について考えれば、アイデアが浮かびます。また、この機能はCamelCasingの省略形をサポートしています;)
シェルフ:コードの一部を簡単に切り離して、diffビューアで確認できます。
ローカルヒストリ:管理がはるかに簡単で、管理が簡単です。
SVNアノテーションと履歴:検査が簡単で、ソースファイル全体のそのような部分の履歴のみを簡単に確認することもできます。
評価式やブレークポイント条件ウィンドウなど、あらゆる場所でオートコンプリート。
Mavenとの統合...はるかにシンプルで、十分に統合されています。
ループの挿入、ラップ/キャスティング、名前の変更、変数の追加など、手にかなり近いリファクタリング。
非常に強力でよく整理されたものを見つけます。大きなプロジェクトでも
大きなプロジェクトの複数のブランチを同時に操作するのに非常に安定している(ブランチソースによる1.5Gbの以前のバグ修正プログラムとして、ブランチソースを同時に操作する必要性があるため、その確かな機能を示した)
よりクリーンでシンプルなインターフェイス...
そして、キーボードだけで使用する方が簡単で、多くの単純な作業でマウスを使用する必要性をなくし、時間を節約して、コードにもっと集中できるようにします...
そして今、オープンソースになっています... Ideaユーザーベースは飛躍的に成長します。
私のタイミングはこのスレッドに関して少しずれているかもしれませんが、私はただ応答しなければなりませんでした。
私は巨大な日食ファンです-初登場以来使用しています。友人が私に(10年以上前に)プレイヤーになると言った。彼は正しかったです。
しかしながら!IntelliJの使用を開始したばかりで、チェンジリストを表示または使用していない場合場合は、プログラミングの天国を見逃しています。
変更されたファイルを追跡する機能(私の開発ブランチalaクリアケース上)は、Eclipseのプラグインで探していたものです。Intellijは、単一のコミットのすべての変更を非常に簡単に追跡します。カスタムリストを使用して、変更されたファイルを分離できます。ローカルで一意である必要がありますが、リポジトリと同期または比較するときに常にフラグが付けられる構成ファイルに使用します-チェンジリストの下にそれらを一覧表示すると、それらを監視できますが、きちんと隠して、実際の追加に集中できます私は作っている。
また、バグ追跡ソフトウェアと統合されていないSCCSのすべての変更のテキストを出力するCommit Logプラグインもあります。ログをチケットの作業履歴に貼り付けると、ファイル、そのバージョン、日付/時刻、およびブランチ/タグがキャプチャされます。それは地獄のようにクールです。
これらすべては、Eclipseのプラグイン(または将来の拡張機能)を介してサポートされる可能性があります。しかし、Intellijはこれを簡単にします。
最後に、私はこの製品に対する主流の愛、つまりキーストロークに本当に興奮しています。
まあ、私にとってそれは千の小さなことです。マクロのいくつか、Eclipseでの一般的なGUIレイアウトはひどいです。Eclipseの異なるウィンドウで複数のプロジェクトを開くことができません。複数のプロジェクトを開くことはできますが、ファイルを切り替えると、ビューベースのシステムが私の周りにたくさんのことを入れ替えます。IntelliJのコードインスペクションはより良いようです。一般的な問題を修正するポップアップヘルパーは素晴らしいです。ホットバーの上にカーソルを置くことができるサイドバーのような単純な使いやすさの多くは、メソッドの実装サブクラスまたは実装しているメソッドとその場所を教えてくれます。
Eclipseを使用する必要がある場合、または誰かが使用するのを監視する場合、EclipseはIntelliJで実行できるほとんどのことを実行できるように見えますが、時間がかかり、扱いにくいです。
変数を導入します。(Ctrl+Alt+VWindows、Cmd+Alt+VOSX)
たとえば、メソッドを呼び出してservice.listAllPersons()
Hit Ctrl+Alt+Vとを呼び出し、Enterメソッド呼び出しからの戻り値の変数が挿入されたとします。
List<Person> list = service.listAllPersons();
入力する手間が省け、呼び出すメソッドの戻り値の型を確認する必要がありません。ジェネリックなどを使用する場合に特に便利です。
new ArrayList<String>()
[変数を導入]
ArrayList<String> stringArrayList = new ArrayList<String>();
(もちろん、ヒットする前に変数の名前を簡単に変更できますEnter)
control+1
(世界で最も明白なキーバインディング、ええと?)を使用している場合、IDEAの意図と同様に、現在のカーソル位置で実行できることを示唆しています。たとえば、「ローカルの割り当て」、「フィールドの割り当て」、その他のオプションが一覧表示されます。control+2, L
それのショートカットです。
ctrl+2, L
後も、作成した変数のタイプを右側のタイプ(デフォルト)または任意のスーパータイプに変更できます。変数のタイプは、TABで選択できます。
IntelliJには、コードからjspxドキュメントへのインテリセンスおよびリファクタリングサポートがあります。
IntellijにはSubversiveやSubclipseよりもはるかに優れたSVNプラグインがあり、動作します!Eclipseを使用してソースファイルをマージするのに無駄に費やした時間は、考えていません。プラグインがさらに役立つので、これはIntelliJの問題ではありません。
また、Subclipseプラグインは信頼性が低く、プラグインが他の開発者によってSVNにチェックインされたコードがないと定期的に認識しているインスタンスがありますが、CIサーバーがそれらを処理しました!
VIMエミュレータ。このプラグインは、IDEAでファイルを編集する際に、ほぼ完全なvi / vim / gvimエミュレーションを提供します。次の機能がサポートされています。
このプラグインについてのコメント http://plugins.jetbrains.net/plugin/?id=164
このプラグインのため、他のIDEに戻ることはできません。両方の長所...すごい!それは私がすべてのIDEで欠けていたものです。私の意見の良い点の1つは、依存構造マトリックスです。http: //www.jetbrains.com/idea/features/dependency_analysis.html#link0
LattixのWebサイト(スタンドアロン製品)には、DSMの使用法と利点に関する優れた紹介があります。http://www.lattix.com/files/dl/slides/s.php?directory = 4tour
他のいくつかのこと:
IntelliJがEclipseで行う2つのことは、私にとって非常に貴重ではありません。
メソッドセパレーター:メソッド間の薄い灰色の線はコードを多くしますより読みやすくなります
テキストのアンチエイリアス:IDEでコードを非常に見栄えよくします
非常に便利な機能の1つは、Mavenリアクタープロジェクトを部分的にビルドして、必要なパーツだけが含まれるようにする機能です。
これをもう少し明確にするために、オーバーレイ技術を使用してそれらの間で共有されている多くの共通リソース(JavaScript、Spring構成ファイルなど)を含むWARファイルのコレクションのケースを検討してください。Webページ(Jettyで実行中)で作業していて、別のモジュールに保持されているオーバーレイコードの一部を変更する場合は、通常、Jettyを停止し、Mavenビルドを実行し、Jettyを再起動して、継続する。これは、Eclipseと私がこれまでに使用したほぼすべてのIDEに当てはまります。IntelliJではそうではありません。プロジェクト設定を使用して、バックグラウンドビルドに含めるモジュールのファセットを定義できます。その結果、シームレスに見えるプロセスになります。プロジェクト内のほとんどすべてのコードに変更を加え、ブラウザを更新するとすぐに使用可能になります。
とてもきちんとしていて、とても速いです。
フロントエンドをYUIのようにコーディングして、それなしでDWR / SpringMVCにバックアップすることは想像できませんでした。
私の回答の前文:Eclipseの使用は制限されています。WindowsとMacの両方で動作するJava IDEが必要でしたが、Macの移植は日ごとに遅くなりました。これは何年も前のことで、今では大丈夫だと思います。しかし、それが私たちがIntelliJに切り替えるきっかけになり、私たちはそれに満足しています。
答えは今ですが、まだ言及されていない大きな違いの1つは、IntelliJ / Jet Brainsの方がテクニカルサポートが優れていることです。JetBrainsに電子メールを送信し、1時間以内に最終的な回答が得られます。Eclipseの問題に対する回答を探すと、通常、「愚かな馬鹿」の回答(通常は少数の回答)と、はるかに多くの洞察に満ちた役立つ回答が返されます。しかし、実際の答えを得るには、いくつかのソートが必要です。
入力時にIntelliJで常に使用しているものがリファクタリングされています。両方のIDEを使用して、印刷物からクラスを書き直しました(元はEclipseで書かれていました)。同じクラスをEclipseよりもIntelliJで記述する場合、キーストローク/マウスクリックを約40%少なくしました。
不完全なコードでリファクタリングをサポートするまで、Eclipseを使いたくありません。
IntelliJ 8.0 / 8.1の機能のより長いリストを次に示します [ http://www.jetbrains.com/idea/features/index.html]
IntelliJがEclipseよりもはるかに優れており、ポケットが空になっていることが1つあります。
ただし、私はそれを使用することを好みます。Eclipceに比べて大きな利点の1つは、ファイルシステムと同期する方法です。大きなプロジェクトと遅いコンピューターの場合(職場の環境では、PCは自宅のものよりもはるかに遅い)Eclipseは初期のインデックス作成時間が遅いにもかかわらず、IntelliJの方が速いように見える問題。
IntelliJ Communityエディションは明らかにそれを無料で使用しますが、CCエディションに含まれていない追加のリファクタリングと素敵な小さな機能がすぐに必要になります。
私の意見では、一般的にユーザーエクスペリエンスは優れていますが、コストに見合うかどうかは、各開発者が自分で答えるのが問題です。
しかし、Javaには最高3つのIDEがあり、NetBeansは常に改善されています。
まず第一に私はintellijが大好きです。食には欠けている機能が少なくとも100あります。リファクタリング、名前の変更、移動など、すでに言及されていることに関しては、誇張では説明できない信頼性とインテリジェンスの大きさについて話しています。
しかし、intellijがeclipseで許可されていないことが1つあります。同じvmで複数のプロジェクトを同時に実行することはできません。
フロント、ミドル、コア、エージェントなどの個別のプロジェクトがあり、それらすべてが相互に対話する必要がある場合、同時に変更とデバッグを同時に行うことはできません。現在私がこれに対処している唯一の方法は、antスクリプトを使用して依存プロジェクトでjarをデプロイおよび更新するか、mavenを使用することです。
Eclipseでは、1つのide vmインスタンスで複数のプロジェクトをデバッグできます。