12

当社では、データ処理の大部分に IBM iSeries を使用しています。当社の社内アプリはすべて RPG で作成されています。IBM のロードマップによると、IBM は企業に Java/J2EE への移行を推進しています。内部アプリをより GUI インターフェースに近代化することを検討しています。おそらくグリーンフィールド プロジェクトは Java である可能性がありますが、Asp.Net Web を使用して外部の Web プレゼンスを提供します。RPGのままでスクリーンスクレイパーアプリを使うのも1つの選択肢ですが、IBMのロードマップに沿ってゆっくりとJavaに移行した方が良いのではないかと思います。私たちの目標は、GUI インターフェースに移行し、IBM のロードマップに沿ったものにすることです。

グリーンフィールド プロジェクトのみが Java で、ブラウンフィールド プロジェクトは RPG のままだったとしても、RPG から Java への移行に関与したことはありますか?

私の経営陣は、次のことを恐れています。

1) ワークステーション、特にシン クライアントで JRE を更新すると、管理上の悪夢が発生する可能性があります (当社では 80% のシン クライアントと 20% の PC を使用しています)。

2) Java が効率的に実行するにはワークステーションのオーバーヘッドが多すぎる

3) 更新時の JRE クライアント間の非互換性により、JRE を必要とする他のアプリが機能しなくなる可能性があります。

これに光を当てることができますか?大きなメリットはありますか?大きな落とし穴はありますか?

明確化: 私は Java への移行にのみ関心があります。難易度はどのくらいですか? RPG から Java に移行すると何か失うものはありますか? Java に移行した場合、画面の応答性は非常に高くなりますか?

4

4 に答える 4

14

私の会社もRPGからJavaへの移行を試みています。

  1. シンクライアントでJREを使用するのではなく、ブラウザを介して配信されるWebアプリケーションに移行します。これには、(最終的には)古いPOSスキャナーを新しいPCベースのスキャナーに置き換えることが必要になる場合があります。
  2. 私は(会社のアーキテクトから)iSeriesOS上のJVMにいくつかのパフォーマンスの問題があると知らされました。私はこれらの制限が何であるかを個人的に知りません。私たちの場合、移行にはAIXリソースの割り当てが含まれますが、これははるかに優れているはずです。OSライセンスを購入するだけでよいかどうかについて、IBMの担当者に相談してください(私はプログラムを作成するだけで、関与しません。ハードウェア)。
  3. 質問1への回答を参照してください。ブラウザ(またはその他のリソース)を更新しようとしている大規模なコンテキストでは、これは通常、エンタープライズライセンスを取得することで処理されます。ほとんどの場合、強制的なリモート更新を許可するオプションがあります。

その他の注意事項:

  • 環境を実行するために別のハードウェア/パーティションが必要になる場合がありますが、.NETのみを使用するように移行できるはずです。少なくとも、その方法でDB2と通信できます。Javaの唯一の利点は、データベースと同じOS/ハードウェアで実行されることです。
  • ここでスクリーンスクレイパーアプリケーションを見たことがあります(これはVB.NETにありましたが、例が当てはまると確信しています)。画面のスクレイピングは、画面上の特定の位置に文字を取得/配置することによって実現されました(と同等substring())。それは私たちが使用していたAPIだけかもしれません-フィールド名を読み取ることができたソリューションについて聞いたことがあると思います。ただし、ロジックはRPGプログラム・フローにも依存しており、それ以外の場合は保守できませんでした。
  • 私が見たり書いたりしたRPGプログラムのほとんどは、MVCに違反する傾向があります。つまり、統合テスト以外のことはできません。言語自体(および一部の開発者)の歴史とアーキテクチャは、すべて(ファイルアクセス)を優先します。画面表示へ)1つのファイルにあります。これにより、リモートで呼び出すためにRPGをラップしようとすることも事実上不可能になります。 すべてをサービスプログラムに適切に分離した場合は、それらを(ほぼネイティブメソッド呼び出しと同等に)きちんとまとめることができます-残念ながら、通常のWebでの使用に耐えられない1つ以上のトリックに依存する傾向のないものはここでは見ていません。 (たとえば、プログラムの実行を制御するためにQTEMP内のファイルを使用する-新しいページが要求されるたびに、iSeries上のセッションは事実上消えます...)。
  • 言語としてのJavaは、RPGの歴史があまりないため、コードの分離を促進する傾向があります(誤用される可能性があることに注意してください)。一般に、Javaを、すべてがサービスプログラムであり、すべてのパラメーターがVALUEsetで渡され、OPTIONS(*nopass : *omit)許可されておらず、CONST一般的に推奨され、ほとんどのパラメーターがタイプDS(データ構造-これは別個のタイプ)である言語と考えると役立つ場合があります。 RPGで)そしてポインタで渡されます。渡されたデータ構造またはサービスプログラムプロシージャ自体のいずれかにすべてをカプセル化することを好む場合、モジュールレベルのパラメータは無視されます。 STATICJavaでの使用法は多少異なり、変数をグローバルにし、プロシージャ内では使用できません。
  • 一般に、RPGはJavaよりもかなり単純であり、オブジェクト指向プログラミングはまったく異なるパラダイムです。Javaに移行する開発者をつまずかせる可能性のあるものを次に示します。
    1. RPGの配列は1から始まります。Javaの配列は0から始まります。
    2. Javaには「出力」パラメーターがなく、すべてのプリミティブ型は値によって渡されます(コピーされます)。これは、整数の編集がメソッドの呼び出しに表示されないことを意味します。
    3. Javaにはパック/署名されたエンコーディングがないため、数値/文字列との間の変換はより複雑になります。JavaのDate型にもいくつかの重大な問題があり(時間や種類が含まれます)、文字表現との間で意味のある変更を行うことははるかに困難です。
    4. SQLを使用している場合でも(JavaでネイティブI / Oを直接使用することを忘れて)、Javaでファイルを読み書きするのは困難です。ただし、これは優れたフレームワークである程度軽減できます。
    5. Javaには演算子はありませんENDxx。すべてが角かっこ({})を使用してブロックの開始/終了を指定します。
    6. Javaのすべてはフリーフォーマットであり、いかなる種類の列仕様もありません(ただし、プロシージャの署名は引き続き必要です)。行の長さにハード制限はありませんが、最大80文字が推奨されます。ツール(無料のものも)は、より優れており、期間が長く、一般的にはるかに役立ちます(ただし、SEUにさらされている人には多少の慣れが必要な場合があります)。ダウンロード可能な巨大な無料のライブラリもあります。
    7. =記号は、RPGの場合のように、Javaではコンテキスト依存ではなく、常に割り当てに使用されます。==Javaでの値の比較には、double-equals演算子を使用します。
    8. オブジェクト(データ構造)を意味のある方法で比較することはできません。代わりに==呼び出されるメソッドを実装する必要がある場合がよくあります。equals()
    9. 文字列は変更できず、変更できません。文字列(クラス/データ構造自体または外部ライブラリから)に対して実行されるすべての操作は、まったく新しい参照を返します。もちろん、文字列は値型ではなくデータ構造と見なされるため、どちらとも比較することはできません==
    10. /copyプリコンパイラディレクティブに相当するものは組み込まれていません。それらを実装しようとすると、Javaが正しく使用されません。これらは通常、「ボイラープレート」コード(変数定義または共通コード)を処理するために使用されるため、アーキテクチャでこれを処理することをお勧めします。変数(実際にはすべてのD仕様)の定義はimportまたはimport staticステートメントで処理されますが、共通コードのバリアントは通常、フレームワークまたは新しいクラスの定義によって処理されます。

他にもたくさんあると思いますが、他にご不明な点がありましたらお知らせください。

于 2011-11-21T23:19:24.743 に答える
3

ファット クライアントの配布と管理は、まったくの悪夢です。

理想的なソリューションは、iSeries でホストされる Java ベースの Web アプリケーションです。ワークステーションは、ASP.NET と同様に Web ブラウザーを介してアプリケーションにアクセスします。

私はGrails Framework を使用して新しいアプリケーションをモダナイズし、作成してきましたが、素晴らしく機能しています。

于 2011-11-21T22:12:47.090 に答える
2

IBM が Java/J2EE に移行する必要があると言った場合、おそらくアプリケーションを asp.net Web アプリのような Web アプリケーションに移行する必要があります。おそらく、JSF や GWT などの機能豊富なインターフェースを使用する必要があります。

必要なのは標準のブラウザーだけなので、Web アプリケーションは JRE の問題を心配する必要はありません。

しかし、私は RPG を知りませんし、推奨される移行戦略も知りません。

于 2011-11-21T21:32:02.303 に答える
0

as400のモダナイゼーションに携わる開発者です。これまでのところ、私の経験から、私はあなたに私の洞察を与えることができます.

Java EE ベースの Web サイトに加えて、さまざまなフラット画面やグリッド画面にサービスを提供する jax-ws ベースの Web サービスを利用することもできます。

クライアントは、好きなテクノロジーでそれらを使用できます。多少のラグはありますが、通常の Web ベースのアプリケーションと同様に、全体的な使いやすさは良好です。

于 2012-01-06T08:09:51.690 に答える