JP2010108076A - ソースコード変換方法、サーバシステム、およびサーバプログラム - Google Patents
ソースコード変換方法、サーバシステム、およびサーバプログラム Download PDFInfo
- Publication number
- JP2010108076A JP2010108076A JP2008277002A JP2008277002A JP2010108076A JP 2010108076 A JP2010108076 A JP 2010108076A JP 2008277002 A JP2008277002 A JP 2008277002A JP 2008277002 A JP2008277002 A JP 2008277002A JP 2010108076 A JP2010108076 A JP 2010108076A
- Authority
- JP
- Japan
- Prior art keywords
- string
- character string
- source code
- bytebuffer
- type variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】コンピュータを用いて、プログラムのソースコードをコード変換する方法を提供する。コード変換する方法は、文字列を保持する文字列型変数s=new String(b,“UTF-8”)を特定するステップと(ステップS210)、前記文字列型変数を、前記文字列を格納するバッファへの参照を保持する参照文字列型変数s=new String(bb)に変換するステップ(ステップS220)と、前記文字列型変数を前記参照文字列型変数に型変換した前記ソースコードを格納するステップと、を含む。
【選択図】図2
Description
特徴1)Stringクラスは、多言語をサポートするために、文字列の表現にUnicode文字を用い、また、文字コードのエンコーディングにUTF−16を用いる。
特徴2)Stringクラスは、Immutableオブジェクトを生成するクラスである。Immutableとは、不変という意味であり、Immutable(不変)オブジェクトは、生成後に状態を変更することはできない。なお、以降、Java、C#については(登録商標)の注記を省略する。
特徴2)StringオブジェクトsがByteBufferオブジェクトbbへのポインタを保持している場合、Stringクラスのメソッドを経由して文字を取り出す際には、ポインタが指すByteBufferオブジェクトbbから必要な8ビット文字を読み出して、上位8ビットに00を付加してcharに変換して値を返す。詳細な処理については、後述する。
特徴3)StringオブジェクトsがByteBufferオブジェクトbbへのポインタを保持している場合、ASCII文字について保持している文字列とByteBufferオブジェクトbbに保持している文字列とは、いずれもUTF−8であって、同一エンコーディングである。そのため、従来、Stringオブジェクトsから文字列をbyte[]配列として取得する際に行っていた、String.getBytes(“UTF-8”)を用いたエンコーディング変換は行わない。
方法2)プログラマが、アノテーション等によって、明示的に保証する。
S10:Webサーバがクライアントから受信したHTTPリクエストは、WebサーバのkernelからByteBufferオブジェクトbbに読み込まれる。
S20:ByteBufferオブジェクトbbの内容をbyte[]配列として返すbb.array()を実行し、ByteBufferオブジェクトbbに格納されたHTTPリクエストをbyte[]配列に変換する。
S40:ステップS30で呼び出されたStringクラスのコンストラクタにて、byte[]配列に変換されたByteBufferオブジェクトbbのHTTPリクエストをUTF−8からUTF−16へ変換する。
S50:ステップS40でUTF−16へ変換されたHTTPリクエストはコピーされ、このコピーをchar[]配列に変換し、Stringオブジェクトsに保持する。
S100:HTTPリクエストを、WebサーバのkernelからByteBufferオブジェクトbbに読み込む。本処理は、図12のステップS10と同じである。
S110:ByteBufferオブジェクトbbを引数として、StringクラスのString(ByteBuffer)コンストラクタを呼び出す。
S120:ByteBufferオブジェクトbbに格納されているHTTPリクエストが、ASCII文字のみであるか判断する。判断結果がYESの場合には、ステップS130へ処理を移す。一方、判断結果がNOの場合には、図1のステップS20に処理を移し、図12に示す従来技術に係る変換処理を行う。
S130:ByteBufferオブジェクトbbへのポインタを取得し、Stringオブジェクトsに保持する。
S230:ステップS210で検知した「s=new String(b,"UTF-8")」を削除する。
S240:ステップS230で削除した「s=new String(b,"UTF-8")」の引数のうち、プログラム中で使用されていない変数に関する代入文を削除する。
条件2)ByteBufferオブジェクトbbがメソッドの返値となっていない。
条件3)ByteBufferオブジェクトbbが、SocketChannel.read(ByteBuffer)メソッド以外の、メソッド呼び出しの引数、となっていない。
条件4)ByteBufferオブジェクトbbが、SocketChannel.read(ByteBuffer)で参照された後、左辺に現れない。
条件5)ByteBufferオブジェクトbbが、SocketChannel.read(ByteBuffer)で参照された後、bb.put()、bb.put*()メソッドが呼ばれていない。
S310:Stringオブジェクトsに保持されているポインタが示すByteBufferオブジェクトbbから、必要な8ビット文字を読み出す。
S320:ステップS310にて読み出した8ビット文字の上位8ビットに00を付加して、char[]配列に変換する。
S330:戻り値として、ステップS320にて変換されたchar[]配列を返す。
2)bb.sref.get()=nullであれば、すでにStringオブジェクトはガベージコレクション(garbage collection;GC)されているので、通常の処理を行う。ここで、ガベージコレクション(GC)とは、プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。
3)bb.sref.get()!=nullであれば、新しいバッファを確保してこれまでのバッファの内容をコピーする。
2 Stringオブジェクトs
3 ポインタ
4 char[]配列
Claims (9)
- コンピュータを用いて、プログラムのソースコードをコード変換する方法であって、
文字列を保持する文字列型変数を特定するステップと、
特定した前記文字列型変数を、前記文字列を格納するバッファへの参照を保持する参照文字列型変数に型変換するステップと、
前記文字列型変数を前記参照文字列型変数に型変換した前記ソースコードを格納するステップと、
を含む、コード変換する方法。 - 前記型変換するステップは、更に、前記バッファが不変であるか否かを判定するステップを含む、請求項1に記載の方法。
- 前記判定するステップは、コンパイラが、前記ソースコードに対し構文解析をして得られた情報に基づいて、判定する、請求項2に記載の方法。
- 前記型変換するステップは、更に、
前記判定が真である場合は、前記参照文字列型変数への型変換を実行し、
さもなければ前記参照文字列型変数への型変換を実行しない、請求項2に記載の方法。 - 参照文字列型変数は、前記文字列がASCII文字列である場合には、前記文字列を格納するバッファへの参照を保持し、
さもなければ、前記文字列を保持する、請求項1に記載の方法。 - 前記文字列が、HTTPリクエストである請求項1に記載の方法。
- サーバ装置を用いて、文字列の受信に応答して受信した前記文字列の表現を変更するプログラムのソースコードを、コード変換するサーバプログラムであって、
コンピュータが
前記文字列を保持する文字列型変数を特定するステップと、
特定した前記文字列型変数を、前記文字列を格納するバッファへの参照を保持する参照文字列型変数に型変換するステップと、
前記文字列型変数を前記参照文字列型変数に型変換した前記ソースコードを格納するステップと、
を実行する、サーバプログラム。 - 文字列の受信に応答して、受信した前記文字列の表現を変更するプログラムのソースコードを、コード変換するサーバシステムであって、
前記文字列を保持する文字列型変数を特定する特定手段と、
特定した前記文字列型変数を、前記文字列を格納するバッファへの参照を保持する参照文字列型変数に型変換する変換手段と、
前記文字列型変数を前記参照文字列型変数に型変換した前記ソースコードを格納する格納手段と、
を含む、サーバシステム。 - サーバ装置を用いて、HTTPリクエストの受信に応答して、受信した前記HTTPリクエストの表現を変更するプログラムのソースコードを、コード変換するサーバプログラムであって、
コンピュータが
前記HTTPリクエストを保持する文字列型変数を特定するステップと、
特定した前記文字列型変数を、前記HTTPリクエストを格納するバッファへの参照を保持する参照文字列型変数に型変換するステップと、
前記文字列型変数を前記参照文字列型変数に型変換した前記ソースコードを格納するステップと、を含み、
更に、前記バッファが不変であるか否かを判定するステップを含み、
前記判定が真である場合は、前記参照文字列型変数への型変換を実行し、
さもなければ前記参照文字列型変数への型変換を実行せず、
前記参照文字列型変数は、前記HTTPリクエストがASCII文字列でない場合には、前記HTTPリクエストを保持する、サーバプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008277002A JP5164112B2 (ja) | 2008-10-28 | 2008-10-28 | ソースコード変換方法、サーバシステム、およびサーバプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008277002A JP5164112B2 (ja) | 2008-10-28 | 2008-10-28 | ソースコード変換方法、サーバシステム、およびサーバプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010108076A true JP2010108076A (ja) | 2010-05-13 |
JP5164112B2 JP5164112B2 (ja) | 2013-03-13 |
Family
ID=42297497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008277002A Expired - Fee Related JP5164112B2 (ja) | 2008-10-28 | 2008-10-28 | ソースコード変換方法、サーバシステム、およびサーバプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5164112B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113660307A (zh) * | 2021-07-19 | 2021-11-16 | 中国电子科技集团公司第十五研究所 | 一种算法综合集成服务*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001125768A (ja) * | 1999-10-27 | 2001-05-11 | Nec Corp | 異なるプログラミング言語間のデータ型変換方法 |
US20040001010A1 (en) * | 2002-06-26 | 2004-01-01 | Nicholas Shaylor | Method and apparatus for creating string objects in a programming language |
JP2005293386A (ja) * | 2004-04-02 | 2005-10-20 | Internatl Business Mach Corp <Ibm> | コンパイラ、コンパイラプログラム、記録媒体、制御方法、及び中央処理装置 |
US6996824B2 (en) * | 2001-05-09 | 2006-02-07 | Sun Microsystems, Inc. | Frameworks for efficient representation of string objects in Java programming environments |
US20080147696A1 (en) * | 2006-12-19 | 2008-06-19 | International Business Machines Corporation | Method for reducing memory size allocated by a string class using unicode |
JP2008226010A (ja) * | 2007-03-14 | 2008-09-25 | Hitachi Ltd | コンパイル方法及びコンパイル装置 |
JP2009129127A (ja) * | 2007-11-22 | 2009-06-11 | Fujitsu Ltd | プログラムの不変物抽出処理プログラム,処理装置,および処理方法,ならびに該プログラムを記憶する記憶媒体 |
-
2008
- 2008-10-28 JP JP2008277002A patent/JP5164112B2/ja not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001125768A (ja) * | 1999-10-27 | 2001-05-11 | Nec Corp | 異なるプログラミング言語間のデータ型変換方法 |
US6996824B2 (en) * | 2001-05-09 | 2006-02-07 | Sun Microsystems, Inc. | Frameworks for efficient representation of string objects in Java programming environments |
US20040001010A1 (en) * | 2002-06-26 | 2004-01-01 | Nicholas Shaylor | Method and apparatus for creating string objects in a programming language |
JP2005293386A (ja) * | 2004-04-02 | 2005-10-20 | Internatl Business Mach Corp <Ibm> | コンパイラ、コンパイラプログラム、記録媒体、制御方法、及び中央処理装置 |
US20080147696A1 (en) * | 2006-12-19 | 2008-06-19 | International Business Machines Corporation | Method for reducing memory size allocated by a string class using unicode |
JP2008226010A (ja) * | 2007-03-14 | 2008-09-25 | Hitachi Ltd | コンパイル方法及びコンパイル装置 |
JP2009129127A (ja) * | 2007-11-22 | 2009-06-11 | Fujitsu Ltd | プログラムの不変物抽出処理プログラム,処理装置,および処理方法,ならびに該プログラムを記憶する記憶媒体 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113660307A (zh) * | 2021-07-19 | 2021-11-16 | 中国电子科技集团公司第十五研究所 | 一种算法综合集成服务*** |
CN113660307B (zh) * | 2021-07-19 | 2024-01-19 | 中国电子科技集团公司第十五研究所 | 一种算法综合集成服务*** |
Also Published As
Publication number | Publication date |
---|---|
JP5164112B2 (ja) | 2013-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7913253B2 (en) | Performing draw operations in a native code portion using cached drawing resources | |
JP3041222B2 (ja) | ソース・コード作成システム及び方法 | |
US6854123B1 (en) | Method, system, and program for mapping standard application program interfaces (APIs) to user interface APIs | |
US6957439B1 (en) | Method, system, and program for mapping objects in different language formats | |
US8850414B2 (en) | Direct access of language metadata | |
TWI536263B (zh) | 將作業系統之原始應用程式介面投射至其它程式語言 | |
US8677328B2 (en) | Generating a dynamic content creation program | |
US20040095387A1 (en) | Virtualized and realized user interface controls | |
US20040098731A1 (en) | Native code exposing virtual machine managed object | |
US6941520B1 (en) | Method, system, and program for using a user interface program to generate a user interface for an application program | |
JP2001526421A (ja) | 異なるフレームワークバージョンで作成されたオブジェクト指向プログラムが通信することを可能にする装置および方法 | |
KR20140057547A (ko) | 런타임 시스템 | |
US20190034178A1 (en) | Compiling non-native constants | |
US8042103B2 (en) | Pre-translated files used in a virtual machine | |
US9038033B1 (en) | Techniques and mechanisms for web application minification | |
JP5811088B2 (ja) | データ処理システム及びデータ処理方法 | |
US8606766B2 (en) | Method and system to handle java class versioning | |
CN116934330A (zh) | 一种调用智能合约的方法及执行方法、计算机设备及存储介质 | |
US7458071B2 (en) | Compilation method, compiler apparatus and compiler | |
JP4768984B2 (ja) | コンパイル方法、コンパイルプログラムおよびコンパイル装置 | |
JP5164112B2 (ja) | ソースコード変換方法、サーバシステム、およびサーバプログラム | |
US20130247003A1 (en) | Using grammar to serialize and de-serialize objects | |
Monnier et al. | Evolution of emacs lisp | |
JP5399601B2 (ja) | 実装コード開発システム、及び実装コード開発プログラム | |
KR100319765B1 (ko) | 시각적인 화면 설계와 고속 처리가 가능한 동적문서 연동장치 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110908 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121002 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20121003 |
|
R155 | Notification before disposition of declining of application |
Free format text: JAPANESE INTERMEDIATE CODE: R155 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121212 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151228 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |