質問: WindowsServer環境でのJava開発とはどのようなイメージでしょうか? WindowsServerってマイクロソフトが出してるサーバーなので、そこでJavaを動かすみたいなイメージですか? 猿でもわか
回答: [Windows Server環境でJava開発を行なう構成] Windows Server環境で、単純にJava開発を行なうだけならば、Windows Serverを使うメリットがありません。 一般にJavaのサーバーシステムの作成では、Windows Serverではなく、UNIX(Linux等のUNIX系列のOSを含む)を使います。 それでは、Windows Server環境でJava開発を行なう場合は、どう言う構成になるのか。 単純なJavaの活用ではなく、メリットのある構成は、どう言ったものなのか。 それは、WindowsとLinuxとの機能を利用したJava系プログラムの開発を行ないます。 Windowsを作った企業のMicrosoftが、Linux Foundation(Linuxを支持する企業達が、Linuxを管理する組織)と手を組みました。 すなわち、Linux系では、Microsoftが作って来た様々な技術を活用するようになりました。 Windows系のほうも、Linuxが作って来た様々な技術を活用するようになりました。 そして、今のWindows(Windows ServerとWindows 10)では、WindowsとLinuxが共存することが可能になっています。 すなわち、LinuxとWindowsは、互いの長所を活かし合えるようになっています。 これに、Javaも加わりたいと願ったのが、本質問での「Windows Server環境でJava開発」となります。 すなわち、Javaで作られた技術と、Linuxで作られた技術と、Windowsで作られた技術とを活かした開発になります。 [Windows Server環境でのJava開発を行なうのに必要な技術] Windows Server環境でJava開発を行なうのに必要な技術は、以下の通りです。 < 1 > 統合開発環境EclipseでのJavaが使いこなせる。 < 2 > 統合開発環境EclipseでのJavaで、Webサービスによるサーバーシステム(SaaSと言うタイプのクラウドコンピューティング)が作れるようになる。 < 3 > MicrosoftでのC++技術やC#技術を使って、WindowsやLinuxの技術を使いこなせる。 Javaプログラマーにとっては、上記の < 1 > と < 2 > は重要です。 しかし、< 3 > については、そこそこに使える程度でも構いません。 上記の < 3 > は、C++とC#を使うプログラマーが担当するので、Javaプログラマーは、そこそこに使える程度でも構いません。 しかし、そこそこ程度でも使えないと、「Windows Server環境でのJava開発が行えます」と言えません。 ちなみに、その「C++とC#を使うプログラマー」の担当の場合は、以下の通りになります。 参考までに読んで下さい。 [Windows Server環境でのJavaと関連づけたC#、及びC++開発] もしも、質問内容が、以下の内容だったとします。 ------------ Windows Server環境で、Javaと関連づけて、C#とC++の開発を行なうには、どのようなイメージでしょうか? ------------ その場合は、C#とC++の開発者が必要な技術は、以下の通りです。 < 1 > Visual C#が使いこなせる。 < 2 > 開発環境Visual C++でのプログラミング言語のC言語とC++が使いこなせる。 < 3 > C++(C言語を含む)とC#との連携が行える。 すなわち、C++(C言語)とC#の連携する技術を持つC++/CLIと言うプログラミング言語を習得する。 < 4 > C#で、Javaと連携させることが可能である。 < 5 > Microsoft系のC++技術やC#技術で、LinuxのC++(C言語)と連携させることが可能である。 < 6 > C#やC++/CLIで、Webサービスによるサーバーシステム(SaaSと言うタイプのクラウドコンピューティング)が作れるようになる。 < 7 > 上記 < 4 > を行なうため、Javaをそこそこには使いこなせる必要がある。 < 8 > 上記 < 5 > を行なうため、Linuxをそこそこには使いこなせる必要がある。 [Windows Serverと関連づけたLinux系C++開発] もしも、質問内容が、以下の内容だったとします。 ------------ Windows Serverと関連づけて、LinuxでのC++とC言語の開発を行なうには、どのようなイメージでしょうか? ------------ その場合は、Linux系でのC++とC言語の開発者が必要な技術は、以下の通りです。 < 1 > Linuxで、C++とC言語が使いこなせる。 < 2 > Microsoft系のC++技術が使いこなせる。 < 3 > C++(C言語を含む)と.NET系技術(C#系の技術)との連携が行える。 すなわち、C++(C言語)と.NET系技術の連携する技術を持つC++/CLIと言うプログラミング言語を習得する。 < 4 > 可能であれば、Microsoft系のC#技術を習得しているほうが望ましい。 < 5 > 上記の < 2 >、< 3 >、< 4 > を行なうため、Windowsをそこそこには使いこなせる必要がある。 [WindowsとLinuxとの共存について] Windows ServerやWindows 10 では、Windows Subsystem for Linux (略称: WSL) と言うプログラムを使えば、WindowsとLinuxとの共存が可能です。 WSLの最初のバージョンでは、疑似的なLinux機能をWindowsで実現するものでした。 すなわち、Windowsのカーネル(OSの中枢部分)を使って、疑似的なLinuxを実現するものでした。 これに対して、バージョンアップしたWSL2では、本物のLinuxを搭載しています。 すなわち、Windowsのカーネル(NTカーネル)とLinuxカーネルが共存します。 このため、Linuxで作られて来た技術やツール等が、そのままWindowsで使えるようになりました。 詳しくは、WSL2のキーワードで検索して下さい。 [Javaからの.NET機能の活用] 統合開発環境Eclipseでは、Javaを中心にして、様々なプログラミング言語が使えます。 統合開発環境Eclipseは、様々な企業が参加して、Eclipse上で動作する開発環境を作れます。 すなわち、統合開発環境Eclipseは、様々な開発環境を統合する開発環境と言う立場です。 統合開発環境Eclipseの上で動作する、様々なプログラミング言語の開発環境は、Javaと連携するこが可能です。 その統合開発環境Eclipseの上で動作する開発環境には、C#の開発環境もあります。 すなわち、C#を利用して、JavaからMicrosoft系技術を活用することが可能です。 「.NETでもEclipseを使ってみる」 詳しくは、EclipseとC#のキーワードで検索して下さい。 [Windowsの最大の特徴であるイベントドリブンについて] Windowsの最大の特徴は、イベントドリブンです。 外来語として使われている一般的なイベント(event)と言う言葉は、出来事や事象のことを指しています。 だいたいは、行事や催し物のことをイベントと言います。 これに対して、Windowsでのイベントとは、ソフトウェアにとって外部から通知される何らかの事象のことをイベントと言います。 その「外部からの通知」とは、キーボードやマウスから発生した信号があります。 また、周辺機器等のハードウェアから来る信号もあります。 具体的には、「マウスの左ボタンが押されましたよ」と知らせる信号があります。 また、「マウスの右ボタンが押されましたよ」と知らせる信号もあります。 また、「マウスが移動しましたよ」と知らせる信号もあります。 また、「キーボードのAキーが押されましたよ」と知らせる信号もあります。 また、「キーボードのBキーが押されましたよ」と知らせる信号もあります。 また、「ソフトウェア(プロセス)が起動されて開始されましたよ」と知らせる信号もあります。 また、「ソフトウェア(プロセス)が終了しましたよ」と知らせる信号もあります。 そう言ったシステム内で発生した現象を通知するための信号がイベントです。 イベントが発生すると、そのイベントに該当する処理(プログラム)が実行されます。 例えば、「マウスの左ボタンが押されましたよ」と言う通知信号(イベント)が発生したら、左ボタン押下で行なうべき処理(プログラム)が実行されます。 また、例えば、「キーボードのAキーが押されましたよ」と言う通知信号(イベント)が発生したら、Aキー押下で行なうべき処理(プログラム)が実行されます。 このイベント(事象)が発生した時に実行される処理のことをイベントハンドラと言います。 イベントの仕組みで、プログラム全体を動作させる方式が、イベントドリブンです。 イベントドリブンを採用している代表が、Windowsです。 [CORBAによるイベントの活用、及びJavaとC++との連携について] イベントドリブンを活用したシステムを作りたい場合は、一般には、Windowsを使います。 しかし、イベントの活用が可能なのは、Windowsだけではありません。 分散システムのCORBAがあります。 分散システムとは、いろいろ説明しますと長くなりますが、簡単に説明しますと、サーバーシステムを作るための本格的な技術です。 Java系でのCORBAを使ったサーバーシステムの作成は、結構有名です。 そのCORBAには、イベントチャネルと言う機能があります。 そのCORBAのイベントチャネルと言う機能で、簡易的にイベントを発生させる仕組みが作れます。 CORBAは、Javaだけではなく、C++にも対応しています。 C++系でのCORBAを使ったサーバーシステムも、結構多くあります。 CORBAを使えば、簡易的とは言え、イベントが扱えます。 また、Javaで作るシステムとC++で作るシステムとの連携が行なえます。 よって、CORBAは、サーバーシステムの作成では、重要な技術となっています。 [Webサービスによるサーバーシステムの作成] 前述のCORBAは、UNIX系でも、Windows系でも使えます。 また、CORBAに対応しているプログラミング言語は、JavaとC++だけではなく、幾つかのプログラミング言語が対応しています。 よって、CORBAは、実質上の標準的な地位を得ました。 しかし、CORBAは、幾つかのプログラミング言語が対応しているとは言え、その対応した範囲に限定されています。 そこで、標準技術による、もっと広く通用したサーバーシステム作成の技術が作られました。 それは、プロトコル(通信の規約)のSOAP --- (続く)