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

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

2
for-eachに「in」の代わりにコロンがあるのはなぜですか?
Java 5言語ガイドから: コロン(:)が表示されたら、「中」と読みます。 inでは、そもそも使ってみませんか? これは何年もの間私を悩ませてきました。他の言語と矛盾しているからです。たとえば、Java では、C ++、Scala、Rubyのようなシンボルの代わりに、型間の関係implementsにextends、がありますsuper。 5つのコンテキストで使用されるJavaコロン。3つはCから継承され、他の2つはJoshua Blochによって承認されました。少なくとも、それは彼が「閉鎖論争」の話の間に言ったものでした。これは、for-eachのセマンティクスと矛盾するマッピングとしてのコロンの使用を批判したときに発生します。これは、for-eachが乱用された予想パターンであるため、私には奇妙に思えます。同様list_name/category: elementsかlaberl/term: meaning。 私はjcpとjsrを調べましたが、メーリングリストの兆候は見つかりませんでした。この問題に関する議論はグーグルによって見つかりませんでした。のコロンの意味に戸惑う初心者のみfor。 inこれまでに提供されたものに対する主な議論: 新しいキーワードが必要です。そして 字句解析を複雑にします。 関連する文法定義を見てみましょう: ステートメント : 'for' '(' forControl ')'ステートメント | ... ; forControl :EnhancedForControl | forInit?「;」表現?「;」forUpdate? ; EnhancedForControl :variableModifier *タイプvariableDeclaratorId ':'式 ; から変更する:とin、複雑さが増したり、新しいキーワードが必要になったりしません。
9 java 

1
MVPパターンでは、ビューはUIコンテンツに基づいてモデルオブジェクトをインスタンス化する必要がありますか、それともこれらのコンテンツをパラメーターとしてプレゼンターに渡しますか?
開発中のAndroidアプリでMVPパターンを使用しています。 基本的に4つの要素があります。 新しいユーザーを追加できるAddUserView: AddUserPresenter UserInfo(pojo) UserInfoManager(ビジネスロジックとストレージマネージャー) 私の質問は: AddUserViewの「追加」ボタンを押すと、テキストビューのコンテンツが取得され、新しいUserInfoがインスタンス化されて、Presenterに渡されます。または、AddUserViewは単にtextViewsのコンテンツを取得してAddUserPresenterに渡す必要があります。これにより、実際にはUserInfoがインスタンス化され、UserInfoManagerに渡されますか?

2
オフラインシステムとの同期
私は、データを生成してサーバーに送信するモバイルデバイス(アプリケーションが埋め込まれている)からのビジネスデータを同期するシステムを設計しています。同期される各行は、データベースに特定のビジネスログを生成します。 同期するデータによって、ビジネスデータの最終変更日よりも古い日付(同期データ内)のデータが生成された場合、それを無視して、ログをデータベースに追加するだけです。アップロードされたデータが処理されると、データベースからデータがフェッチされ、デバイスにダウンロードされます。 書き込み直後のこのダウンロードのため、同期は同期でなければなりません。このような何かが私の既存のソリューションを置き換えるのに十分な価値がある場合は、まだリーダー/ライターのパターンを持つことが可能です。より重要なことは、最新のデータをダウンロードできることです。そのデータは全体としてフェッチされ、現時点では差分は実装されていません(後で来る可能性がありますが、問題はありません)。 同じビジネスオブジェクトで複数の同期を実行している可能性があります。それは起こりそうにありませんが、起こり得、それを処理できることを望んでいます。組み込みモバイルアプリケーションを数日間再同期せずに使用しない限り、同期は数秒続くことが予想されますが、数分は続きません。 同期されるデータの量は、同期プロセスも大きくなることは想定されていません。 つまり、同期の方法で相互排除を使用することになります。より正確には、Javaを使用し、読み取り専用の同期をブロックしないように、同期プロセス全体ではなく、書き込みメソッドに同期を設定します。 私が知りたいのですが : この方法が理にかなっていますか?同期プロセスの量と時間は許容範囲です。 一般的に、どのような概念を検討する必要がありますか。おまけ:Springモジュールにこれらの概念の実装がある場合。

3
同じ名前のクラスを処理する方法(異なるパッケージ)
私と私のR&Dチームは、大規模なコードベースを維持しています。ビジネスロジックを複数のパッケージに分割しました。そのうちのいくつかは持っている同じ名前のクラスを。 ご想像のとおり、両方のクラスが同じJavaファイルで参照されている場合、名前は競合します。 例えば: com.myapp.model (package) - Device (class) - ... com.myapp.data (package) - Device (class) - ... これらのケースを処理するためのベストプラクティスは何かについて議論があり、次のオプションが考えられました。 最初のオプション クラスの名前を変更し、接頭辞を追加する ModelDevice DataDevice 2番目のオプション 両方が参照されている場合の完全なパッケージ+クラス名の使用 com.myapp.model.Device com.myapp.data.Device コード管理とスケーラビリティの点でより正しいものは何ですか? 現在、両方のアプローチを組み合わせており、矛盾が生じ始めています

2
単体テストで注釈の存在を確認できますか?
抽象クラスとそのN個の拡張によって形成されるJavaクラス階層があります。抽象クラスには、@ Removeアノテーションが付けられたメソッドがあります。このアノテーションが削除されても例外がすぐに失敗することはありませんが、メモリ不足の例外が発生する可能性があるため、このアノテーションがリファクタリングで消えた場合は、できるだけ早く通知するようにしたいと思います。 私はGUTS(優れた単体テスト)を作成しようとしているので、テストでこの「技術要件」を文書化し、それを明記するテストケースを作成できると考えました。 しかし、これは機能ではなく、実装の詳細であり、メソッドの動作にはリンクされていません(メソッドは空である可能性がありますが、存在し、注釈が必要です)。 そのためのテストを作成しても大丈夫ですか、またはこの注釈の存在を確認する他の方法はありますか?

1
ISO-8601の「kk」と「HH」+1の違いは何ですか?
ISO-8601には複数の時間形式があり、そのうちの1つは1〜24時間の「kk」です。 これの目的は何ですか?時間を相殺した国はありますか?軍事用ですか? Wikipediaの記事は、 HHと株式会社との正確な性質を明らかにしませんでした。私の懸念の主な原因は、SimpleDataFormatterでのフォーマットの動作です。 編集:私が言及しているSimpleDateFormatの直接の部分はこれです: H時間(0〜23)数値0 k時間(1〜24)数値24 使用中... HH:mm:ss // 00:00:00 kk:mm:ss // 01:00:00

1
javadocsのコード例を最新に保つ方法
私は、基本的なよく知られている文字列メトリックの実装を提供する小さなライブラリに取り組んでいます。主に私自身の教育のために。ですから、少し時間があるときに開発が行われます。 このため、私はほとんどのプロセスを自動化しているので、バージョンをリリースするのに、手間をかけずに頻繁に行うことができます。ただし、例が含まれているため、Java docの保守は依然として負担です。 APIが進化するにつれ、各例を手動で繰り返し確認する必要があります。これを行うより良い方法はありますか? ドキュメントと例を別のプロジェクト(Caliperチュートリアルなど)に移動することを検討したので、通常のコードと一緒にリファクタリングしてコンパイルできます。ただし、これにより、ドキュメントが目的のクラスから移動します。 そうそう。ケーキも食べてみたいです。:D * <h2>Tokenization</h2> * * Tokenization cuts up a string into tokens e.g. * <code>chilperic ii son of childeric ii</code> is tokenized into * <code>[chilperic, ii, son, of, * childeric, ii]</code>. Tokenization can also be done repeatedly by tokenizing * the individual tokens e.g. * …

8
Cがコンパイル/解釈/ JITされるのを妨げる原因は何ですか?
Javaは、その驚くべき移植性でしばしば賞賛されています。これは、JVMが原因だと思います。私の質問は、Cがコンパイル/解釈/ JITされるのを阻止するものです。もしそうなら、Cは1度だけ記述して、あなたが持っているどのデバイスでも動作させることができます。しかし、これはCプログラムを処理するための一般的なメカニズムではありません。 もちろん、このようにCを処理することの欠点は何ですか?もちろん移植性以外に、このようにJavaを処理してマシンコードにコンパイルしないことの利点は何ですか?

5
Javaの「インターフェイスへのプログラム」は常に意味がありますか?
インターフェイスから実装するクラスがどのようにインスタンス化されるかに関するこの質問での議論を見てきました。私の場合、私はのインスタンスを使用するJavaで非常に小さなプログラムを書いており、TreeMapそこでの皆の意見によると、次のようにインスタンス化する必要があります。 Map<X> map = new TreeMap<X>(); 私のプログラムでmap.pollFirstEntry()は、Mapインターフェイスで宣言されていない関数(およびMapインターフェイスにも存在する他のカップル)を呼び出しています。私はTreeMap<X>次のようにこのメソッドを呼び出すすべての場所にキャストすることでこれを行うことができました: someEntry = ((TreeMap<X>) map).pollFirstEntry(); 上記の初期化ガイドラインの利点を大規模プログラムで理解していますが、このオブジェクトが他のメソッドに渡されない非常に小規模なプログラムの場合は、不要だと思います。それでも、私はこのサンプルコードを求人アプリケーションの一部として書いており、コードの見栄えを悪くしたり、散らかしたりしたくありません。最もエレガントなソリューションは何でしょうか? 編集:私は、特定の関数を適用するよりも、広く適切なコーディング方法に関心があることを指摘しておきますTreeMap。一部の回答は既に指摘されている(そして、最初に回答したものとしてマークした)ため、機能を失うことなく、可能な限り高い抽象化レベルを使用する必要があります。

3
非常に古い学校のアプローチに戻って、マイクロサービスで一周しましたか?
ソフトウェアのアーキテクチャと設計の観点から、マイクロサービスはミドルウェアに対してどのように「積み上げ」られますか(意図されていません)私はJavaから来ています。APIとしてのまっすぐなRESTから離れ、少なくともJavaでさまざまなレイヤーと接続パラメーターを抽象化すると、非常に古い学校のアイデアにほぼ完全に戻ってきたようです。仮想化に戻りました... JVMがすでに仮想化されているかどうか。 不可知論的な方法で、RESTful APIをCORBAに抽象化することができ、その利点を主張します。または、よりJava中心の方法で、JMSまたはMDB。 かつて、EJBはJavaで大きな問題でしたが、それがクラスター効果の一部であると認識されていましたが、今、最初に戻りましたか? または、マイクロサービスは、CORBA、またはさらに優れたMDBにはないものを提供しますか?マイクロサービスの説明(TLDR)Martin Fowlerを読んだとき、もしそうなら、それは悪い問題の良い解決策として私を驚かせます。むしろ、問題を押し広げるだけの複雑さのレベルをもたらすクローズドマインドアプローチ。サービスが本当にマイクロで数が多い場合、それぞれのサービスの実行と維持に1ドルのコストがかかります。 さらに、多くの中で1つのマイクロサービスがそのAPIを変更すると、そのサービスに依存するすべてが壊れます。それはしないように見えるそれは、疎結合思わアジャイルの反対を。それとも私はそれらの言葉を誤用していますか? もちろん、これらの両極端の間には不確定な量の選択肢があります。 サメ対ゴリラ...行く! (知識を深めるために、それは皮肉なことを意味し、私の意図ではありません。質問は額面通りに受け取られることを意味します。質問を改善できる場合は、そうするか、コメントしてください。修正します。 ) Dockerで実行されている多数のマイクロサービスがすべて1台のマシンで実行され、互いに対話していることを想像してください...狂気。保守や管理が難しく、変更を重ねると予期しないエラーが発生するため、何も変更することはほとんど不可能です。これらのサービスが異なるマシンに分散していることはどういうわけですか?そして、それらが分散されている場合、確かに、非常に古くからあるいくつかの手法が、少なくともある程度、分散コンピューティングを解決しています。 なぜ水平スケーリングが普及しているか、少なくとも望ましいのですか?

2
String [] args vs(String。。。args)
Android向けにプログラミングする場合、AsyncTaskを使用すると、doInBackgroundメソッドは次のようになります。 protected String doInBackground(String... args) しかし、そのブロックのどこかで引数を使用すると、たとえばプログラムで通常の文字列配列のように引数にアクセスできます @Override protected String doInBackground(String... args) { String details = ""; try { details = facade.getRecipeDetails(args[0]); } catch(Exception ex) { ex.printStackTrace(); } return details; } これはうまく機能し、私はそれを扱うことに問題はありません。しかし、なぜ通常の文字列配列の代わりに(String。。。args)を使用するのか疑問に思っています。それは、呼び出しメソッドで次のようなものを書くことができるからです: new AsyncHandler.execute("argument1","argument2","argument3",...) 引数を渡す新しい配列を作成する代わりに?書けたけど new AsyncHandler().execute(new String[]{"Argument1","Argument2"}); これはもう少し冗長です。 (String ...)とString []は同じように機能しますが、配列を作成する必要がないため、前者を使用すると引数の受け渡しが簡単になりますか?私が知る限り、前者もバックグラウンドで文字列配列に変換されるので、両方とも同じコードにコンパイルされ、それは単に「構文上の砂糖」にすぎませんか?
9 java  android 

2
Javaを使用しないAndroidでの開発[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 この質問のタイトルが示すように、Javaをまったく使用せずにAndroidプラットフォームでアプリを開発できることを楽しみにしています。私がこの美しい言語に対して何らかの復讐をしたり、Javaでアプリを開発する方法がわからなかったりするわけではありません。しかし、私のアプリケーションはXML、JavaScript、およびAjaxを使用することによってのみ開発できると考えています。 それでも、Javaに依存する必要がありますか? Javaを使用しないことのデメリットはありますか? 今後もアプリを拡張できますか? ここで本当に愚かな質問をしていますか? 親切に私を助けてください。 編集: 私が取り組んでいるアプリ(まだホワイトボードにあり、このアプローチについて専門家の意見が必要です)は、さまざまなニュースソースからニュースをフェッチし、そのユーザーに表示します。

2
Scalaを学ぶ、落胆した[閉じた]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 私はJavaの出身で、Scalaを学ぼうとしています。現在、私はかなり圧倒されていると感じています。Scalaで学ぶことはまだまだたくさんあり、同じことを行うためのさまざまな方法があるようです。 どこから始めればいいのか、そしてその言語で適度に有能だと感じるまでにどれくらいの時間がかかったのか、誰かアドバイスはあるのだろうかと思いました。 forループ内包表記のような小さなことでも本当に強力に見えますが、これは覚えておかなければならない構文のもう1つの断片です!
9 java  scala 

9
異なるプログラミング言語でOOPを学習することに違いはありますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 OOPを学びたいです。私はPythonを知っており、OOPについてはほとんど知りません。 しかし、フォーラムで「learn OOP」を検索すると、「Pythonは非常に新しいため、PythonでOOPを学習できないのです。Javaを学習してから、JavaでのOOPを理解する必要がある」という男を見かけました。 本当ですか?異なるプログラミング言語でOOPを理解するのに違いはありますか?Java、C#、C ++、Perl、Pythonで学習したいですか?

1
LLVMを介してC ++アプリケーションからJavaへのポートを作成することは実行可能ですか
LLVMを使用してC ++アプリケーションをJavaバイトコードに移植することは、どの程度実行可能ですか(おそらくLLJVM)。 現在のところ、プロセスはC ++で記述されていますが、新しいクライアントでは、明らかにネイティブコードがない(JNIがない)Java仮想マシンを使用して、マルチプラットフォームでプログラムを実行できるようにする必要があります。アイデアは、生成されたjarを取得して別のシステム(Linux、Win、32ビット-64ビット)にコピーできるようにすることであり、動作するはずです。 周りを見回すと、C ++をLLVM IRコードにコンパイルしてから、そのコードをJavaバイトコードにコンパイルできるように見えます。生成されたコードが読み取り可能である必要はありません。 私はemscriptenを使用して同様のもので少しテストしました。これはC ++コードを取り、それをJavaScriptにコンパイルします。結果は有効なJSですが、完全に読み取ることができません(アサンブラーのように見えます)。 この技術を使用して、C ++からJavaバイトコードへのアプリケーションの移植を行った人はいますか? どのような問題に直面する可能性がありますか? 量産コードに対する有効なアプローチはありますか? いくつかのコメントの後で私のポイントをより明確にするために、おそらくポートが十分に使用されていない可能性があります。結果として、読み取り可能なソースコードは期待できません.javaバイトコードだけなので、今後開発される「ポート」ではありません。ターゲットのプラットフォームは、ネイティブのアッサンブラーではなく、Java JVMでなければなりません。 注:現在、いくつかの非標準C ++およびクローズソースライブラリがあることを承知しています。この非標準コードおよびすべてのクローズソースライブラリを削除し、無料のLibreオープンソースソフトウェアを使用する予定です。したがって、すべてのコードが標準C ++コードであると仮定しましょうコンパイル時に利用可能なすべてのコード。 注2:移植可能なC ++コードを記述して、それを目的のターゲットプラットフォームにコンパイルするオプションではありません。コンパイルされたプログラムはマルチプラットフォームでなければならず、したがってJVMを使用します。 注3:現在、Pythonや他の言語ベースに適用される同様のソリューションについては検討していませんが、それについても聞きたいと思います。これにより、ターゲットの実行可能ファイルはjavaバイトコードである必要がありますが、C ++を有効なpythonコンパイル済みコードにコンパイルするオプションがある場合は、それらについても聞きたいと思います。
9 java  c++  porting 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.