C# vs Java どっちが好き? その4©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>302
その差は大きいけど>>290の主張とは関係ないな 確実に分かった事が一つある
ここの人たちはハイレベルだな
俺にはチンプンカンプンだもんね >>302
C#自体の設計自体はOS依存じゃなく
設計時から切り離されてるよ Javaの教祖マーティン・ファウラー御大、名著「リファクタリング」第2版にJavaではなくJavascript を採用してしまうwwwww
https://martinfowler.com/articles/201803-refactoring-2nd-ed.html ファウラー本人にも葛藤があったようだけど今リファクタリングすべきコードで溢れてるのはJavaScriptだから仕方ない >>301
https://docs.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2008/77859s1t%28v=vs.90%29
パスやファイル名を表す文字列を引数にとるルーチンでは、UNIX 互換のパス デリミタを使用します。
UNIX ではパス デリミタとしてスラッシュ (/) しか使用できませんが、
Win32 オペレーティング システムは円記号 (\) とスラッシュ (/) の両方を使用できます。 >>303
関係大有りだと思うけど。また、fake news だ。 >>305
それを言うなら、CもC++も設計自体は、OS依存じゃなく設計時
から切り離されてる。数十年前から。 >>299
普通にOSSのライブラリを使えばok
https://blogs.msdn.microsoft.com/dotnet/2017/01/19/net-core-image-processing/
C#の標準ライブラリがマルチプラットフォームに機能不足なのは確かだけどね
GUIのマルチプラットフォームはElectronでいいかなーという気分
クソ重いけど >>312
再コンパイルすればC++だって、ほとんど全ての環境にも互換性があるのは同じ。
互換ライブラリさえあれば、マルチプラットフォームなのはC++だって当たり前。 そういうわけでlinuxで動いていたバイナリをwindowsに持ってきたのだ >>314
バイナリが動くのCPUが同じ系列の間だけね >>302
x 対応している
o 対応を謳っているが品質が低く、テストしてデバッグして修正しないと動かない Java は GUI を使った場合でも結構簡単に、他のプラットフォームでも動く。
実際、ブラウザ上のアプレットでも実行できるようになっているわけで、
現実に動く確率はとても高い。
C#は、上で挙がっている例のように、そもそも動くように設計すらされてない。 >>319
実際、MSのFUDだと思う。現実にJavaは、1つのソースでどのプラットフォーム
でもちゃんと動くし。C#は、そもそも最初から動かない事がはっきりしてる。 >>311
Electron も wasm も、ベースが JS だから、マルチスレッドの対応がとても弱い。
例えば、何か重たい処理を実行中に「中止ボタン」付きのダイアログを出して、
中止できるようにすると言うようなことが、やりにくい。スレッドの中断自体は
terminate メソッドで可能だが、「クリーンアップ処理」ができない。
Win32だと、他スレッドへ「例外」を送ることができるので、catch すれば、
クリーンアップ処理できるはず。 Javaも、Win32と同様に他スレッドに例外を throw できるらしいので、
今言ったようなことをすることができるはず。つまり、重い処理を
ワーカー・スレッドで実行しているときに、メインスレッドの「中断」ボタン
を押すと、処理を中断して、なおかつ、クリーンアップ処理もできるはず。
しかも、中断ボタンが押されたかをワーカースレッドでは、ポーリング
する必要はないので効率はとても良い(Win32/MFCでもその点は同じだが)。
Electron/wasm/JS などではそれができない。 >>320
でもJREを入れなきゃ動かないし
世間的にJREはウィルス扱いだからなぁ workerはpostMessage on messageできるだろ >>325
それで、WokerThread は、イベントが発生したことを知ることまではできると思う。
しかし、そのイベント・ハンドらの中から、例外を throw しても、WorkerThread
の本体では、catch する事はできないはず。だから、クリーンアップ処理を行う
のは難しい。 swingとか久しぶりに聞いたなw
あんなもんでGUI作ってる人まだいるのか >>326
メッセージングでやりゃいいんだよ。
なんかtrycatchが目的化してない?
goで導入しなかった理由読んだ?
そういう考え方もあんだよ。 >>328
WorkerThread が、例えば、4重のforループの中で、データを処理していたとして、
MainThreadで「中止」ボタンが押されたので、WorkerThreadを中断したい場合、
どうやってWorkerThread が作成した中途半端なデータをクリーンアップするの。
あと、少し論点がずれるけど(最初考えてなかったので)、
char *pBuf = new char [・・・]; (1)
・・・
delete pBuf; // (2)
pBuf = NULL; // (3)
みたいなものは、必ずセットで行わなくてはならないことが多い。
しかし、(2),(3)の間に「中止」のイベントが入ってきた場合、困った問題が起きそう。 昔だったら、for文の先頭あたりに、1バイトのint3命令を書き込むという
コード書き換えテクニックを使う手もあったけど、LLVMとwasmでは
そんなこともできそうにないし。 誤:delete pBuf; // (2)
正:delete [] pBuf; // (2) (2)と(3)の間で (中止)例外を throw されても困るので、(中止)例外
が throw されてもいい場所に、ある関数check_stop()を書くようにしておいて、
check_stop() は、瞬間的に中止要求があるかどうかを示す flag をポーリングして、
もし「1」になっていたら、例外を throw するようにすればいいかな。
[WokerThread]
try {
for (・・・) {
check_stop();
・・・
}
}
catch(ストップ例外) {
/*クリーンアップ処理*/
}
volatile BOOL g_bStop = FALSE;
void check_stop()
{
if ( g_bStop ) {
throw ストップ例外;
}
}
見たいな感じ。 >>319
キミはいつJavaを始めたんだね? Javaのバグの歴史ぐらい勉強してほしい。
歴史を捏造するようになったら、もうそれはネトウヨだ。 >>335
フフフ、今まで碌にテストしないでリリースしていたJava開発者がこれからは急に心を入れ替えてテストするというのかい? >>334
朝鮮ネトウヨの歴史捏造は酷いからな
歴史をコリエイトと言われているくらい嘘と願望だからな >>337
貴方は優秀なエンジニアだ思うんだけど話がそれがち〜 >>320
JavaならAWTを使ってどこでも動くGUIアプリ作れるよ
↓
AWTは糞だよ、これからはSwingだよ
↓
Swingも糞だよ、これからはJavaFXだよ
↓
JavaFXを標準から外すよ、AWTやSwingも将来の保証はないよ
この迷走ぶりに対する感想は? ご自慢のGUIを移植できずにcoreから切り離しちゃうよりはマシじゃね? GUIはわりと独立してるから仕事の影響それほどない
気に入るまで作り直してくれ メソッドのout 出力はわかった
refがわからん・・・
必死にググってるんだけど
ピンとこないわ エロゲで例えてくれ SwingとかC#と比べたらうんこ過ぎてあんなばっちいもの2度と触りたくないと思ったけど。 つかC#よりGUI書きやすい言語ってこの世に存在しないだろ? >>346-347
は嘘。fake newsなので気をつけよう。 このスレはJava信者がちょっとイタすぎるな。無知すぎる。 若造は、最初に見たものをそのまま信じるから困る。
MSのセールストークや「噂」をそのまま信じてる。 Java案件=デスマーチと言われるぐらいだからな。多くの若者が鬱になって逃げ出した。
なぜプロジェクトの途中にPGの募集があるのかよく考えよう。 他スレッドの停止はキャンセルトークンなりのパターン使えばいいじゃん
javaアプレットが許されるなら.netはSilverLightやwasmへの変換ができると自慢すればよいのかw? 欝の人は、自分と関係した事柄をなんでも悪く取る傾向がある。だから、昔から
ある言語(Java)は悪口書かれやすい。新しく出た言語(C#)は実経験を伴わない
から良いことばかり書かれやすい。 >>356
新しく出た言語?いつの時代の話をしてるんだ? ちゅうか、Javaは出たときから急激に人気が出たのに対し、C#は実は余り人気が
ないのかも。なんかごった煮で、センスが悪いからかな。 Javaは古くからあって、C#は大分新しいと思ってたけど、そうでもなかったんだな。
この感覚の差はどこから来てるんだろう。 https://teratail.com/questions/44042
>アプリ開発未経験者が Xamarin を使うのは適していないと考えます。
>Xamarin は基本的に、 Android API, iOS の API を C# から呼び出せるようにしたものなので、両者について知らないとアプリ開発はできません。
>画面までも同一コードで開発できるとされる Xamarin.Forms についても、同一コードで開発できる範囲はとても狭いので、それを超える要件に対応するには、Android や iOS の知識が必要になります。
Java
Android SDK
iOS SDK
Mac
Xcode
C#
.NET Framework
Mono (.NET Framework のオープンソース実装)
Visual Studio
Xamarin.Android
Xamarin.iOS
Xamarin.Forms
これだけの知識をゼロから並行して身に付けていくのは、否定はしませんが効率は悪いと思います。
まずは Java での Androidアプリ開発や、Swift での iOSアプリ開発を経験されて、慣れてから Xamarin の使用を検討することをお薦めします。
また Xamarin でアプリ開発する際のトラブルシューティングの方法について書きました。
Xamarin を使用したアプリ開発での、問題解決の方法 - Qiita
トラブルシュートにも手間がかかるわけですが、このデメリットがメリットを上回ると判断されるなら、Xamarin は使わない方がよいでしょう。 まとめると Windows と Visual Studio で Android と iOS アプリの開発を始める場合、以下の知識が必要になります。
Java
Android SDK
iOS SDK
Mac
Xcode
C#
.NET Framework
Mono (.NET Framework のオープンソース実装)
Visual Studio
Xamarin.Android
Xamarin.iOS
Xamarin.Forms C#:「多くのOSで動くが、動くと言うだけで、ほとんど互換性がない」
Java:「同一コードが(再コンパイルもなしに)そのまま動く確率が99.9%」
(C++:「互換ライブラリさえあれば、ソースは共通化可能」) 海外勢がreact nativeに逃げたのも納得w
日本人は真面目だなぁ >>361
お前が何も新しいことを学んでいないということ まあMS自身が自社製品にC#殆ど使ってない時点でお察しくださいとしか マルチプラットフォームのデスクトップアプリなら
kotlin+javafxが今のとこベストだと思ってる
なんだかんだでどこでも動くし
だが最近のmsは嫌いじゃないしoracle大嫌いだから
xamarinには期待してる
javafxどうなっちゃうんだろ・・・ >>368
Process Explorerで.netプロセスを色付き表示する設定にしてみろ
お前が思ってる以上に.net使われてるから >>371
Win7で、調べてみたら、Microsoft Expression Web 4 だけが .Net アプリで、
他は全て違っていた。
そして、Expression Web 4 だけが起動が超遅くて、起動後の動作も遅い。
C++、Win32/MFC で作られたソフトでこんな遅いソフトは、まず存在していない。 mono入れたらC#で作ったexe、linuxで問題なく動いたけどな 今時linuxで動く必要ってある?
サーバー以外で使ってる人なんている? Wineが実用段階になってきたので、Winから一気に Linux や ChromeOS なんかに
デスクトップOSが移る可能性がある。その際、Linuxで動くことは重要になる。 wineて20年前の技術じゃん。
そんなの使ってるのお前だけ。
みんなゲストOSとしてインストールしてるよ ID:tPeGzwzY
古代からタイムスリップしてきた人か むしろ、個人のPCでJavaで作られてる有名GUIアプリって何があったっけ
IntelliJ系とかBurpとかは思いつくが
最近はwindbgの外側がC#製になって驚いた WindowsとLinuxのどっちをゲストOSとしてインストールしてるのか知らんが、
Windowsの支配から離れる、というのが21世紀の人類の目標だ。
人類の多くがその目標に向かっているので多勢に無勢で、Windowsはやがて
終わるだろう。それが目前に迫っている可能性がある。
それに、古いと言うが、Wineの改良は活発に行われている。最近特にVersionUp
が激しいらしい。 やなこった。
ここでやられると噂が広まって困るもんな、あんたは。 ありとあらゆる手段を使って、Windowsは潰される。見ておれ。 Windowsの支配から離れる!(シェア90%超) >>386
前から思ってたんだけど貴方、面白いよね 左翼系の人アンチWindowsみたいなの好きだよね LinuxがWindowsを倒せるほど良いOSなら
何でGoogleはLinuxカーネルを使わない新OSの開発なんてやってるんだ?ww >>390
googleの新OSは携帯デバイス向けの軽量なものなんじゃ
linuxは汎用のOSである分専用に設計したOSより無駄が多いんじゃよ
googleが新OSを開発してるからといってlinuxが悪いわけじゃない
googleは自社のインフラにlinuxの独自のディストリを使ってたりするしね
何事にも向き不向きがあるんじゃよ 初耳だよ。googleは何専用のOSの設計なんだ? >>375
Wineがどうこう言ってる時点で「LinuxにはGUIアプリの資産がろくにない」って白状してるようなものだろ
「何事にも向き不向きがある」んだからLinuxとWindowsも使い分ければいいだけの事 Wine/ネイティブよりもMono/.NETの方が安定じゃない? GPLが嫌ならAppleやソニーみたいにBSDパクればいいだろう。 >>397
結論から言うと、WineとMonoは、11年の時間差があるのに加えて、
WineにおけるMSのコーレルへの投資と、MonoにおけるMSのXamarine買収
が対応し、開発の鈍化、停滞へと導かれる。
Wine は、開始から25年たった現在、ようやく実用段階に達したが、
まだポツポツとした不具合がなかなか取れない。
一方、Mono は、開始から 14年しか経ってない。だから、後11年経っても、
ようやく現在のWine程度にしかならないと予想される。
Wineプロジェクトは、初期、互換性がなかなか高まらなかったが、
コーレル(など)の支援によって一時的に状況は好転した。しかし、MS の
コーレルへの大規模投資により、支援は中止。
同じことが、MSによる Xamarine買収にも当てはまる。つまり、今後、
Monoの開発は、鈍化する。
[Wine]
開始: 1993年 (ネットニュース上で創始)
MSによるCorelへの投資: 2000/10, 2002/10
0.9(最初のβ版): 2005/10/25
[Mono]
1.0: 2004/06/03
2.6: 2009/12/15
Xamarin: 2011/05
MSによるXamarine買収: 2016/02/24 windows1.0 1985
linux 1.0 1994
Android 1.0 2008
開発開始時期に一体何の意味があることやら・・・ ■ このスレッドは過去ログ倉庫に格納されています