パスワードを忘れた? アカウント作成
3019102 story
Android

AndroidがC#に移植される 93

ストーリー by headless
移植 部門より
matarillo 曰く、

Xamarinは、AndroidのJavaで書かれた部分をC#に移植した「XobotOS」をGitHubで公開した( Xamarinのブログ記事GitHub - XobotOSatsushieno氏のブログ記事本家/. )。

XobotOSはJavaをC#に変換する「Sharpen」と呼ばれるツールを使用して移植された。ホストOSと統合する部分のコードと、Java JNIからCで書かれたネイティブコードを呼び出すコードを手作業で置き換えた以外は、Sharpenにより自動変換されている。XobotOSではAndroidがMono上で動作し、Dalvik VM上と比べて大幅にパフォーマンスが向上するという。また、C#と.NET VMはECMAで標準化されており、Javaのような特許問題が発生しない点もメリットといえる。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • できればネイティブ言語APIとして両方つかえると嬉しいんだろうけど...
    容量的には難しいかw

    # 最後段のインタフェース面だけJavaライクなAPI層だけ用意して、中身をMonoベースにしてもいいかもしれぬ、という夢もあるな、夢だけだが。

    --
    M-FalconSky (暑いか寒い)
  • by Funayoi (3170) on 2012年05月05日 20時58分 (#2147401)

    Windows Phoneを使えばいいじゃないの?
    もっとパフォーマンス向上するよ。

    オープンソースじゃないけど。

    • by Anonymous Coward

      目的がちがうくない?

  • by Anonymous Coward on 2012年05月05日 17時57分 (#2147290)

    ただし、自分がAndroidアプリ開発者だったら悲鳴を上げる。

  • by Anonymous Coward on 2012年05月05日 18時14分 (#2147303)

    のか?
    c#や.netもでかくて重い印象だが。

    それにJavaっていうかDalvicも何かメリットがあるんだろ?
    思い付かないけど。

    • by Anonymous Coward on 2012年05月06日 3時32分 (#2147509)

      structが使えたり(無駄なヒープ使用/new削減効果、gcのスキャン対象削減効果)、デフォルトがvirtualメソッドにならなかったり、type erasureが無い分最適化されたコードが生成されたり
      dalvikよりははるかにマシな速度が出る。フットプリントは知らん。

      あとdalvikは速度面ではluaに負けてた(luajit)

      親コメント
    • by Anonymous Coward

      メモリ消費も少ないみたいだけど、フットプリントについての記述が見つからない。ROM500MBくらい専有するけど軽いよとか言われてもな

    • by Anonymous Coward

      ところがぎっちょん
      C#が使える ≠ NET Frameworkが使える

  • by Anonymous Coward on 2012年05月05日 18時23分 (#2147309)

    仕事ほっぽり出してコーヒー飲んでるんじゃねぇー

  • by Anonymous Coward on 2012年05月05日 18時36分 (#2147317)

    これってAndroidのアプリは動かないんだよね? Android向けでOSSのソフトならXobotOS自体と同じ手順で移植できるけど、プロプラのアプリとかはそのままでは動かないのかな。HT-03Aが余ってるから高速化できるならしてみたい…

  • by Anonymous Coward on 2012年05月05日 18時44分 (#2147319)

    「C#に移植」って言葉は正しいのか?

    • by Anonymous Coward

      タレコミ見るとコードコンバータを使ったようなので「(Javaから)C#に移植される」で間違ってはいないとは思う。
      「何を使ったか」という意味合いだと「C#で移植される」だとは思うけど。

    • by Anonymous Coward

      ただしく解釈できる読み方もできるようだけど、
      Android(OS)をC#(言語)に移植?ってなんじゃそりゃ?
      って思うよね

      • by Anonymous Coward

        それであってるけど。
        なにがおかしいと思ったの?

        • by greentea (17971) on 2012年05月05日 23時45分 (#2147466) 日記

          多くの場合「xxに移植」って表現では、xxは言語ではなくハードウェアや環境を指すことが多いね。(例: PSPに移植、Windowsに移植)
          俺にはあんま違和感なかったし、おかしいと言われるまで気付かなかったけど。

          --
          1を聞いて0を知れ!
          親コメント
          • by greentea (17971) on 2012年05月05日 23時46分 (#2147467) 日記

            「多くの場合(略)が多いね」って表現の方がおかしいorz

            --
            1を聞いて0を知れ!
            親コメント
          • 言語αで記述されたプログラムを、言語βで記述しなおすことを
            「言語αから言語βに移植」という表現を使うのは、全然おかしくないでしょう。
            Jython なんかは「Pythonを(Cから)Javaに移植」したものだし
            歴史的には「UNIXを(アセンブラから)Cに移植」なんてこともあった。

            今回のストーリーは「Android(のGUI フレームワーク)を(Javaから)C#に移植」したものなわけで、それなら意味的に全然問題ないでしょう。
            「のGUIフレームワーク」という部分がすっぽ抜けてるのが、違和感の大元ですかね。Android全体で見ると、Javaで記述されてるのはその一部に過ぎないから。

            • by Anonymous Coward on 2012年05月06日 3時42分 (#2147510)

              >「言語αから言語βに移植」という表現を使うのは、全然おかしくないでしょう。

              おかしい。
              言語は移植の道具。

              シャベルAで植木鉢Aに植えたバラを、シャベルBで植木鉢Bに移植するときに、「シャベルBに移植」って言うかい?

              親コメント
              • by greentea (17971) on 2012年05月06日 8時21分 (#2147546) 日記

                移植の道具、単に作る手段の違い、と捉えている人は簡単におかしさに気付いて、
                言語を環境や何かだと捉えている人はなかなか気付かなかったんじゃないかなぁ。

                --
                1を聞いて0を知れ!
                親コメント
              • by taka2 (14791) on 2012年05月06日 14時28分 (#2147682) ホームページ 日記

                > 移植の道具、単に作る手段の違い、と捉えている人は簡単におかしさに気付いて、
                > 言語を環境や何かだと捉えている人はなかなか気付かなかったんじゃないかなぁ。

                これを読んで納得しました。言語を道具と捉える人と、言語を環境と捉える人との意見の相違なわけですね。
                とはいえ、「おかしさに気付いて」「気付かなかった」などと、「おかしいと感じる方が正しい」という物言いには異を唱えておきます。

                ソースはWikipedia、というのがアレですが、Porting [wikipedia.org]の項には

                The term is not generally applied to the process of adapting software to run with less memory on the same CPU and operating system, nor is it applied to the rewriting of source code in a different language (i.e. language conversion or translation).

                と、異なる言語への書き換えはPorting に含まないとしてますね。おそらくgreenteaさんの考える移植の定義に近いのはこれでしょう。

                一方、移植 (ソフトウェア) [wikipedia.org]の項には

                しかしWindowsとMacintoshシリーズでは、一部のソフトウェアを除いては、同じソフトウェアが動作しない。これらはOS側で提供している環境が異なるためである。これと同じように、世界中には様々なプログラミング言語が存在し、同じ動作をコンピュータにさせるためには、それぞれのプログラミング言語の仕様に則ったプログラムを作成しないと、動作するソフトウェアは作れない。例を挙げれば、プログラミングの基礎中の基礎とされるHello worldが挙げられる。この、“Hello world!”と表示するだけの、僅か数十文字程度のプログラムは、プログラミングに利用する言語によって様々に変化する(詳細はHello worldの項を参照のこと)。

                と、別言語で動くようにすることについての言及があります。
                また、たとえば JRuby [wikipedia.org]の項には

                JRuby は2001年、Jan Arne Petersen が開発した。その当時(およびそれから数年間)、そのコードは Ruby 1.6 のC言語コードの直接的な移植に過ぎなかった。

                という記述もありますし、この部分は英語版 [wikipedia.org]でも

                the code was a direct port of the Ruby 1.6 C code.

                と、port が使われてる。

                別言語への書き換えを移植/portと認めない流儀があるのもわかりますが、
                別言語への書き換えも移植/portと表現する流儀もあるわけです。

                個人的には英語版のPorting項目で、別言語への書き換えは porting ではなくconversionやtranslationだと言われてるのはかなり違和感があります。
                conversionやtranslationというのは、同機能な別言語プログラムを作成する手段の一つにすきず、他にもクリーンルーム方式や目コピーなどの手段があるわけで、手段ではなく行為を指す言葉としては「移植」と言うのが一番しっくり来る。

                親コメント
              • by greentea (17971) on 2012年05月06日 17時51分 (#2147775) 日記

                なるほど。

                私も#2147466で「多くの場合」という表現にとどめているとおり、
                果たして別言語への書き換えを「移植」と言わないのか、あまり自信がありません。

                とりあえずGoo辞書 [goo.ne.jp]には「コンピューターで、ある特定の機種で動くプログラムを、他の機種でも動くように変更すること」とあったので、
                その定義から外れる別言語への書き換えは便宜上「間違っている」という書き方をしましたが、
                ・「機種」という言葉が曖昧に思えて「環境」と読み替えた方がしっくりくる
                ・私自身が、言語を単なるツールとしてよりも環境として捉えている
                といった理由から、別言語への書き換えを「移植」と表現することがそうおかしいとは感じていません。

                --
                1を聞いて0を知れ!
                親コメント
              • by greentea (17971) on 2012年05月08日 6時46分 (#2148870) 日記

                そもそも言語を
                > 環境や何かだと捉えている人
                は頭がおかしいので、

                頭がおかしい人がおかしいと思ったというだけの話。

                ……と思ってる人も、いるだろうな。ある種の宗教論争。

                --
                1を聞いて0を知れ!
                親コメント
        • by Anonymous Coward

          WindowsをC#に移植
          AndroidをHTMLに移植
          LinuxをMisaに移植

          おかしいだろ。

        • by Anonymous Coward

          移植されたのはOSとしてのAndroidではなくFramework部分だし、
          移植先は言語としてのC#じゃなくって実行環境としてのMonoだから。

          Java→C#で既存コードの変換かけたのは上記の移植を行うための手段であって、
          移植そのものじゃないってこと。

      • by Anonymous Coward

        良かった、こんなにおかしいって思う人が居て
        どうも許せない日本語だった

  • by Anonymous Coward on 2012年05月05日 20時58分 (#2147400)

    JNI層ってAPI層より下だから
    マーケットにあるプログラムをC#にリコンパイルすれば
    オラクルは何も言えなくなるのだろうか

    • by Anonymous Coward

      言えるだろ。
      GPLのソフトウェアをツールで自動変換したので、GPLライセンスには抵触しません(キリッ
      とか、通るわけない。

typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...