タグ付けされた質問 「java」

Javaは、元はSun Microsystemsによって開発された、プラットフォームに依存しない高レベルのオブジェクト指向プログラミング言語です。Javaは現在、2010年にSunを購入したOracleが所有しています。

4
Javaを使用したCSVファイルの生成
プロジェクトでは、Javaプログラムを使用して2時間ごとに大きなCSVファイルを生成する必要があります。 このファイルには約60,000行(1行あたり約120文字)があります。サイズはまだわかりません。 FileWriterを使用してファイルを開き、書き込みを続け、最後にファイルを閉じるため、メモリの問題が発生するかどうかを知りたいです。 ファイルのサイズを気にする必要がありますか?はいの場合、FileWriterを使用する以外に、Javaで大きなファイルに書き込むための優れたテクニックはありますか? Java 5を使用しています。
8 java  csv 

2
大量のデータを処理する低カップリング
通常、それらの間でリスト、セット、およびマップを交換するクラスを作成することにより、低結合を実現します。現在、Javaバッチアプリケーションを開発していますが、十分なメモリがないため、すべてのデータをデータ構造内に配置できません。データの1つのチャンクを読み取って処理し、次のチャンクに進む必要があります。したがって、読み取るデータがまだあるかどうかなどをどこかで確認する必要があるため、カップリングを低くすることははるかに困難です。 私が今使っているのは: ソース->プロセス->持続 処理するクラスは、読み込む行がまだあるかどうかをソースクラスに問い合わせる必要があります。 そのような状況でのベストプラクティスや有用なパターンは何ですか? 私に言わなければ、自分自身を説明しているといいのですが。

2
Java Fat-Jar ArchiveとしてLGPLライブラリを含むソフトウェアバンドル
仕事では、多くの外部依存関係があるJavaアプリケーション(私たちが作成した)のソフトウェアバンドルをデプロイしています。そのほとんどはLGPLであり、BSDライセンスのサードパーティライブラリはJARアーカイブとして配布されています。 現在、Mavenアセンブリプラグインによって作成された単一のJava Fat jarアーカイブとして配布されるソフトウェアのテストクライアントをデプロイしています。 すべての依存関係を抽出する それらを単一のjar-archiveとして再バンドルします すべてのクラスファイルが抽出され、独自のアプリケーションで単一のJARファイルにバンドルされます。同じ名前を持っているため、一部のファイル、主にLICENSE.txtファイルが上書きされることにも気付きました。 これが正しく、LGPLライセンスに準拠しているかどうか疑問に思っています。ソフトウェアを配布するより良い方法は何でしょうか?この特定のパッケージはどのように最適に編成されますか? ソースコードをソースファイルに直接組み込んだり、バイナリファイルを変更したりすることはありませんでした。ライブラリのソースコードは製品全体に付属しています。(これは、内部で使用されるソフトウェアであり、顧客やその他には展開されていませんが、問題ではないと思います。) PS:Stack Overflowで同じ質問をしたところ、ここで質問するよう提案されました。
8 java  deployment  lgpl 

2
Eclipseは私のJavaプログラムを6倍速く実行します…使用せずにこのパフォーマンスを達成できますか?
与えられた文字と長さに基づいてすべての反復的な順列を生成するJavaプログラムを作成しました。 Eclipseでコードを実行すると、わずか15秒で1,000,000の順列を持つファイルが生成されます。それでも、「java permutation」を使用してコマンドプロンプトで同じマシンでプログラムを実行すると、同じ1M順列を生成するのに1分35秒かかります。 どうしてこれなの?とにかく私は日食を使わずにこのタイプのパフォーマンスを得ることができますか? 編集:Java VisualVMの結果を追加 www.craftboom.co.uk/jvm.png-日食で実行すると、CPU使用率が高くなります。シェルo_OでCPUとメモリの両方の使用量が0に低下することがある EDIT2:画面への印刷に問題があることがわかりました。元の投稿では触れていませんでしたが、プログラムは各順列をコンソールに出力します。コメント化してファイルに保存しました。シェルと日食の両方で同じくらい高速に実行されます :-) 返信ありがとうございます。


11
オブジェクト指向のものは本当にそれほど重要ですか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張ディスカッションを誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 何年もの間、私はアルゴリズム関連の作業を行っており、インターネット検索用のスケーラブルなデータ構造を作成しています。情報検索関連の作業など 上記で述べたことには共通点があります。上記すべてのもの; C ++のような言語でコーディングされている場合は、それぞれ少数のクラスが必要です。私はそれらが興味深い問題であることを意味しますが、負荷の高いオブジェクト指向のものに関しては複雑ではありません。継承や仮想化などを使用したことがありません。ジェネリックプログラミングやテンプレートなどを頻繁に使用しています。 私はC ++が大好きです(-かさばるOOのもの、Erlangの作成者であるJoe Armstrongの言うところが好きなので、OO Worldではバナナを要求すると、大きなジャングルとバナナを抱えているゴリラができます)。私はJavaやPythonのような他の言語でのコーディングも楽しんでいます。 今私の質問は、私が取り組んでいるプロジェクト/アルゴリズムの種類を楽しんでいるからです。オブジェクト指向の要素を本当に学ぶ必要がありますか。継承、動的ポリモーフィズム(仮想)のようなものを使用するだけで、より優れたコーダー/デザイナーになれますか?または、関数型プログラミングの世界に移動できますか(私は今までそれを行っていません)、タスク/アルゴリズムに集中でき、名詞の王国に基づいたオブジェクト指向の要素、has-a、is-aルールを使用できないので、より魅力的です私? 簡単に言えば、OOは私が上記で言及した種類のプロジェクト/アルゴリズムについて私を助けることができますか? 編集: ここに追加する1つの非常に興味深いリンク: http://steve-yegge.blogspot.in/2006/03/execution-in-kingdom-of-nouns.html

6
静的関数とクラス
BigDecimals を使用していくつかの基本的な計算を行うためのユーティリティ関数を構築したいとします。たとえば、の平均を計算する関数が必要ですList<BigDecimal>。 最善のアプローチは何ですか?静的関数またはユーティリティクラス? public static BigDecimal computeAverage(List<BigDecimal> numbers) または public class BigDecimalUtil public computeAverage(List<BigDecimal> numbers)

4
再利用可能なオブジェクトの抽象メソッドとインスタンス変数
再利用できるように手直ししているJavaコードがかなりあります。問題は、プロジェクト固有の部分が多く、アプリケーションプロジェクトとコードベースプロジェクト間の結合のレベルが高くなることです。 抽象メソッドの使用を実装するクラスを使用して子クラスからリソースを取得する以下の状況と、インスタンス変数を宣言するだけの状況と比較してください。 抽象メソッド: public abstract class SuperBaseClass { public abstract int getNumberOne(); public abstract String getStringOne(); public abstract String getStringTwo(); public printStuff() { Log.i("IntAndTwoStrings", String.format("%i %s and %s", getNumberOne(), getStringOne(), getStringTwo())); } } public class ReusedAppClass extends SuperBaseClass { public int getNumberOne() { return 1; } public String getStringOne() { …

4
GUIの自動テストを行うにはどうすればよいですか?
見えているものと見えないものを自動的に確認するにはどうすればよいですか?または、少なくとも一部の自動テストをどのように整理できますか? IDE:Eclipse(必要に応じてIntelliJ Ideaも使用できます) テストツール:Junit(ここでも、助言されれば他の何かを使用できますが、無料であればより良いです) アプリケーションOS:Android 開発者のOS:Linux(MACまたはWindowsで変更される可能性があります(しぶしぶ)) 言語:Java すべての作業は外部デバイスで行われます。エミュレーターはありません。 このアプリケーションは、外部アクティビティと呼ばれるファームウェアTVプレーヤーのユーザーラッパーです。したがって、コードの70%はGUI用です。(残りの30%はサーバーに話しかけ、GUIに情報を提供します) テスト機能をプログラムする前は、ツールを使用していません。今私は手元にツールを持っています。しかし、UIをツールを使用して、またはツールを使用せずにテストする方法を想像することはできません。(厳密には、インターネット接続では問題も発生しますが、おそらく他の質問のために残しておきます。)答えはプラットフォームに依存しすぎている必要はありません。原則とアイデアも役立ちます。 もちろん、チェックするのは良いことです。別の要素があり、チェックされているかどうかです。そのためには、いくつかの回帰チェックが適しています。しかし、アニメーションで注文したように、言及されている要素が他の要素やウィンクによってカットされていないことも確認する必要があります。 ここでのアドバイス:https : //softwareengineering.stackexchange.com/questions/63245/is-there-a-tool-to-test-java-ui は役に立ちません-ツールのみであり、原則ではなく、私の状況ではツールが役立ちます。
8 java  testing  gui  ui 

2
ネストされたコレクションをよりエレガントに処理する方法はありますか?
私の質問はむしろデザインの質問です。私のプログラムでは、次のようなデータ構造に到達しました。 private ConcurrentHashMap<A, ConcurrentHashMap<B, ConcurrentHashMap<Integer, C>>> services = new ConcurrentHashMap<A, ConcurrentHashMap<B, ConcurrentHashMap<Integer, C>>>(); そのようなデータ構造をよりエレガントに処理する方法はありますか?ありがとう! edit:A、B、Cはビジネスクラスです。Aインスタンスは(関連付けとして)多くのBを「持つ」ことができ、Bは多数のマッピングを「持つ」ことができますInteger-C。

2
Javaがメソッド参照に。ではなく::を使用するのはなぜですか?
なぜJavaでは::なくメソッド参照にJavaを使用するの.か、たとえば、なぜ System.out::println の代わりに System.out.println もちろん、単に「デザイナーが決定したため」と答えることもできます。一方、ドットはクラスメンバーにアクセスするための通常のJava構文であるため、2番目の構文を期待していました。 メソッド参照に::既存の.規則を使用する代わりに、新しい構文を導入する既知の特別な理由はありますか?
7 java  methods 

1
インターフェイスを動的に実装する新しいJARをプラグインするにはどうすればよいですか?
背景:自分や他の開発者が実装するインターフェースの開発に取り組んでいます。このインターフェイスにより、ユーザーは新しい機能コードをシステムに「プラグイン」して、新たに使用することができます。この新しいコードは、すでに実行中のサーバー/アプリケーションから呼び出されます。(TLDR:オンザフライでアプリケーションにプラグインをインストールする機能を開発する必要があります) これまでにインターフェースで行ったすべての作業は、内部コーディングの目的で行われており、外部に公開されることはありません。ユーザーが新しいコード実装インターフェースをプラグインできるようにするために私が考えることができる唯一の方法は、ユーザーが実装クラスを含むJARファイルをフックし、何らかの方法でそのクラスシグネチャを呼び出し用に定義することです。これは以前に行われたことのように思えますが、私はコーディングの側面に触れたことはありません。 サーバー/アプリケーションの実行時に新しいJavaコードのこのプラグインを許可するために使用できるフレームワークはありますか?私は以前にAPIを使用したことがありますが、より多くのWebサービスでは、コアインターフェイスを「実装」せずにサービスを消費している場所を明らかにします。 参考までに、メインアプリケーションにSpringを使用してJavaバックエンドを使用しています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.