問題タブ [jvm-languages]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JVMの所有者は誰ですか?
多くのモバイル デバイスには、その OS (Nokia、sony ericcson など) に JVM が搭載されています。すべてのデバイスで同じ JVM が使用されますか? すべての JVM は Sun Micro Systems によって所有されていますか? デバイス メーカーは、サン マイクロ システムに対価を支払いましたか? 独自の JVM を作成したい場合、Sun マイクロ システムに料金を支払い、SUN(ORACLE) から許可を得る必要があるとします。そうでない場合、どのようにして太陽は利益を得るのでしょうか?
android - ScalaをコアAndroidプラットフォームに統合する方法は?
Scala(または他のJava以外のJVM言語)をAndroidプラットフォームに統合することに興味があります。私は、早い段階で行ったScalaを使用したAndroidアプリケーションの作成について言及していませんが、実際には、Androidプラットフォームのソースツリーをビルドするビルドプロセスにフックしています。これは、makefileなどにフックすることの問題になると思います。誰かがこれについて洞察を持っていますか?
私がこれまでに持っているもの: 「[GoogleAndroidをダウンロードしてビルドする] [1]」に基づいて、未使用の形式でビルドされたgit://android.git.kernel.org/platform/manifest.gitのプラットフォームソースツリー
- build / core / combo / scalac.mk#config.mkに含まれるscalaコンパイラ関連の変数を設定します
- build / core/definitions.mkにall-subdir-scala-filesとall-scala-files-underの定義を追加しました
- パッケージに含まれるようにscalaファイルをビルドするためにdefinitions.mkに定義を追加しました
残っているもの:
- scala-library.jarを含める
- -bootclasspathへの変更が何も壊れていないことを確認します
- ScalaクラスがJavaクラスに依存し、その逆の場合の処理方法を理解する
- コードの主要なクリーンアップ
- テスト!
- 私が行った変更で(ここに投稿する以外に)何をすべきかを理解する
もうすぐそこにいるようです!!!
過去からのいくつかのメモ
最新:Javaソースファイルがコンパイルされている場所を見つけました!definitions.mkで、「definetransform-java-to-classes.jar」を参照してください。最新のアイデアは、transform-scala-to-classes定義を記述し、それらのクラスをパッケージ化される直接に格納することです。このステップの直前に、transform-java-to-classes.jarでtransform-scala-to-classを呼び出します。eclipseとcygwinのサポートは、回避策でコードが乱雑になり、失敗の可能性が高くなるため、今のところ削除されます。
ビルドプロセスは、build / core /main.mkを実行するルートMakefileによって開始されます。build/core/ main.mkには、HOST_JAVAC、TARGET_JAVAC、およびを設定するbuild / core / combo/javac.mkを含むbuild/core/config.mkが含まれます。 COMMON_JAVAC。COMMON_JAVACは、「共通の引数を持つJavaコンパイラコマンド」です。特別な環境(openjdkまたはeclipse)でない限り、他の2つの変数はデフォルトでこれらの値を取得します。COMMON_JAVACは、このファイルの外部では使用されません。他の2つは、build / core/definitions.mkでのみ使用されます。
build / core / java_library.mk(config.mkに含まれています)は、jarのビルドにのみ関係しているようです。これは私たちが気にする範囲外です。jarとの対話は、scalaファイルの構築にすでに成功していることを前提とするクラスファイルを前提としています。
javaのバージョンに関してmain.mkにチェックがあります。これらを無視し、scalaのバージョンに互換性があると想定します。現在(combo / scalac.mkで)javac.mkで使用されているのと同じ--targetargを使用しています。これはおそらく変数に格納する必要があります。
main.mkには、いくつかの便利な関数を定義するbuild / core/definitions.mkも含まれています。ここで気になるのは、all-java-files-underとall-subdir-java-filesです。後者は、Javaファイルを見つけるためにAndroid.mkファイルで使用されます。前者は後者の実装に使用されます。それらに相当するScalaを書きます。
ビルドプロセスがどのように機能するかを理解するために、私は現在、-nなどを使用してmakeを実行しています。このアイデアは、stackoverflowの記事「[makefileをデバッグするためのツール][2]」から得ました。リメイクによるデバッグも検討中です。
build / core / {config.mk、definitions.mk}は、どのmakeファイル/コマンドが何をするために使用されるかについての光を与えてくれます。
プロジェクトごとのサポートをハッキングする可能性のある方法として、プロジェクトのAndroid.mkファイルに追加のコードが追加される可能性があります。platform / build / core / build-system.htmlから、「Android.mkは、特定のモジュールのビルドを制御するmakefileフラグメントの標準名です。最上位ディレクトリにのみ「Makefile」という名前のファイルが必要です。」と読みます。「scala-build」のような新しいターゲットを作成し、最終的なmakeの前にそれを実行(make PackageName scala-build)することができます。おそらく、変数の割り当てでこっそり隠して、ターゲットを明示的に呼び出す必要性を軽減することもできます。
もう1つの方法(はるかにハック的)は、javacに使用されているコマンドをハイジャックすることです。これはbuild/core / combo/javac.mkで設定されます。プロジェクトのAndroid.mkには、*。javaファイルと一緒に*.scalaファイルをLOCAL_SRC_FILESに含める必要があります。
java - プロジェクトでの Clojure の使用例
もちろん、Clojure を使用できるからといって、Clojure を使用することについて話しているわけではありません。
Clojure をいつどこで使用するか、プロジェクトにどのような価値をもたらすかについて興味があります。
Clojure を使用できる Java Web 開発を行っているとします。ユースケースはありますか?
ありがとう。
clojure - Clojure/Lispマクロの書き方を学ぶための本
「プログラミングClojure」を読んでいて、マクロをできるだけ広範囲に作成する方法を説明している本に興味があります。
このための本を提案しますか?
ありがとう。
java - Javaプラットフォームの投資額
Javaプラットフォームへの総投資額(全世界、地域別、国別)を計算するために利用できる市場調査の数値はありますか?これには、ソフトウェア(アプリケーションサーバー、IDE、プロファイリングツール)、ハードウェア(Sunサーバー、バイトコード実行プロセッサ)、人員(トレーニング、書籍)、言語開発(Java、Clojure、Scala、..)、パブリック/プライベート(大学、政府、企業)など。
私はJVM言語のプレゼンテーションに取り組んでおり、Javaプラットフォームへの既存の投資は莫大であり、すぐにはどこにも行かないことを、信頼できる方法で説明したいと思います(Cobolを考えてください)。この点はIT担当者にとっては明らかだと思いますが、ビジネス関係者が実際にこの点を理解できるように、1ドルの数字を付けたいと思います。
コメントが始まる前に、私はこの質問が私たちのほとんどが「プログラミング関連」であると考えるものの外縁にあることを認識しています。とにかく、この情報を知ることは、プラットフォームの将来に関する多くのIT部門の議論に役立ち、開発者がキャリアの決定を下すのにも役立つ可能性があります。
jvm-languages - バイトコードにコンパイルされるのではなく、どのJVM言語が解釈されますか?
JVM言語に関するウィキペディアの記事には次のように記載されています。
これらの言語のいくつかはJavaプログラムによって解釈され、いくつかはJavaバイトコードにコンパイルされます...
どのよく知られた汎用JVM言語がJavaプログラムによって解釈されますか?
clojure - 型消去はClojureの存在にどのように役立ちますか?
JVM型消去はClojureにどのように役立ちますか? それなしでClojureは存在できますか?JVM が具体化された型を持っていたらどうなるでしょうか? つまり、Clojure はどのように変化するのでしょうか?
java - プログラマー/開発者向けのJVM内部に関する正規リファレンス
タイトルは私の質問をかなりよく捉えています。JVM(HotSpotだけでなく、明らかに開始する場所)が特定の機能を実装または処理する方法についての質問に対して、優れたリソースまたは跳躍点があるかどうか疑問に思っていますか?私はJLSまたはJVM仕様にあるものを探していません-私は最初にそこに行くことを知っています。
例:パフォーマンスの問題を理解しようとすると、仕様の内容ではなく、実際の実装での現代のベストプラクティスがどのように見えるかについて話し合うことがよくあります。たとえば、「JVMはそのようなものをインライン化または最適化できるため、最終クラスはJavaでより優れたパフォーマンスを発揮する」という都市の神話がいくつかあります。浮かんでいるこれらの主張を評価するために私たちが頼ることができる一般的なリソースはありますか?
HotSpot固有のリファレンスを使用して、私自身の質問に対する回答を提供します。他のベンダーの製品はどうですか?小さなJVMの詳細?マルチコアの詳細?プラットフォームの詳細、違いがあれば?他のJVM言語の詳細?
いくつかの潜在的な苦情を回避するために:1)これは時期尚早の最適化を探すことではありません(そして実際、プラットフォームをよりよく理解することはより良い教育を受けた開発者を思いとどまらせるはずです!); 2)Javaプログラマーは、どこでも実行できる優れたコードに集中することになっていることを私は知っていますが、私たちの多くにとって、プラットフォームの詳細は重要になります。
これは、 ThorbjørnRavnAndersenによる特定の質問に対するいくつかの有益なコメントに触発されました。人々がこれらの種類のリソースを必要とする理由を動機付けるために、上記で引用したもの以外のいくつかのより役立つ例を収集できてうれしいです。
SOに関するいくつかの興味深い関連質問: JVMでの末尾呼び出しの最適化、Killer JVMの機能、明日役に立たなくなる最適化、 JVM実装間の違い。
編集して追加: 言及された最高の個人参照、またはJVM実装の知恵と実際の結果を最も集中/カタログ化するWebサイト(おそらくこの質問に答えて構築された)へのポインターを提供する誰かに答えを与えますクライアントの言語と開発者。
scala - Scala の関数型パラダイムだけに固執することの有効性
私は最近Programming Scalaを購入し、それを読んでいます。言語は間違いなく私が期待したものではありません! 具体的には、Lisp マクロと Haskell の型レベルの副作用の分離を除いて、私が知っているほぼすべてのプログラミング言語のアイデアを実装しているようです。
率直に言って、それは私をやや圧倒しています。非常に多くのツールを自由に使用できるのは良いことだとは思いますが、実際には JVM で厳密に型指定された関数型言語を探していました。おそらくそのようにScalaを使用できると思いますが、ライブラリとやり取りしたり、他の誰かのコードを調べたりすると、この高度な(私にとって)OOPの多くに遭遇することになると思います--特性と「オブジェクト階層」線形化」、このすべての抽象的でオーバーライドするビジネス、シングルトン、パッケージ、およびコンパニオン オブジェクト、暗黙の変換...さまざまな構文のショートカットやシュガーは言うまでもありません。
多くの正当な理由から、ある言語のスタイルを別の言語に押し込もうとするプログラマーを嘆く人がよくいます。しかし、すべての言語が Scala のようにマルチパラダイムであるとは限らないため、おそらく Scala のコミュニティは異なる見解を持っているのではないでしょうか? 例えばF#では、プログラミングスタイルやOOPの使用量に多少の余裕があるようです。しかし、読んだだけでは、これが Scala にとっても良い哲学であるかどうかはわかりません。
経験豊富な Scala プログラマーがここで私を助けてくれますか? わかりやすくするために編集:基本的に、高度な OOP 側について心配することなく、Scala の FP 機能のみ (またはほとんど) を安全に使用できますか?
とりとめのない質問でごめんなさい!
clojure - Clojure のリモート インスタンスへの接続
REPLを介してClojureのリモートの本番インスタンスに接続できることを読みました。
これについて説明していただけますか?そしてそれを行う方法は?
「Clojure のインスタンス」とはどういう意味ですか?