約 5,444,910 件
https://w.atwiki.jp/naobe/pages/25.html
言語に戻る EJB JavaEE5 MBean JMX JNDI サーブレット 言語仕様 項目 説明 transient 修飾子。Seriariseオブジェクトの保管しないフィールドを修飾する。 クラスローダ http //www.techscore.com/tech/Java/JavaEE/Servlet/supplement-1/ 参照 目的 同じ名前でバージョンの異なるクラスを使用するために使う。クラスローダが異なればバージョンが異なっても良い。自分自身のクラスローダを得るにはgetClassLoader()メソッドを用いる。 クラスローダには親子関係があり、子クラスローダがクラスをロードするときには、親クラスローダにロードを依頼してロードできなければ、子クラスローダがロードする。 Class#getClassLoader()は、このクラスをロードしたクラスローダを返す クラスローダによってロードされたClassはパーマネント領域に格納される。ClassLoaderがGCされるとGCから解放される。 VMのクラスローダ ブートストラップクラスローダ JAVA_HOME /lib下のJARファイルに含まれるクラスをロードする。JDK6は、 JAVA_HOME /jre/lib下? 親はいない 拡張クラスローダ JAVA_HOME /lib/ext下のJARファイルに含まれるクラスをロードする。JDK6は、 JAVA_HOME /jre/lib/ext下?親はいない システムクラスローダ CLASSPATHで指定した位置からクラスをロードする。親は拡張クラスローダ。ブートストラップクラスローダは親子関係なしでも委譲されるということでは? 通常のnew Foo()ではこのクラスローダが使われる。 ブートストラップクラスローダ、拡張クラスローダ、システムクラスローダの順番でクラスをロードする。 コンテキストクラスローダ(JDK6 API Threadより) コンテキスト ClassLoader は、クラスおよびリソースをロードするときに、このスレッドで実行中のコードが使用するためにスレッドの作成側によって提供されます。コンテキスト ClassLoader が設定されていない場合、デフォルトでは親 Thread の ClassLoader コンテキストになります。通常、親スレッドのコンテキスト ClassLoader は、アプリケーションのロードに使用されるクラスローダーに設定されます。 なので、設定しなければシステムクラスローダがコンテキストクラスローダになる。 コンテキスト・クラスローダを設定・取得するには、java.lang.Thread#setContextClassLoader,getContextClassLoaderメソッドを使う。 クラスローダ作成 JDK6 APIより たとえば、アプリケーションはネットワーククラスローダーを作成して、サーバーからクラスファイルをダウンロードできます。コードは次のようになります。 ClassLoader loader = new NetworkClassLoader(host, port); Object main = loader.loadClass("Main", true).newInstance(); . . . ネットワーククラスローダーのサブクラスは、ネットワークからクラスをロードするために findClass メソッドと loadClassData メソッドを定義しなければなりません。クラスを作成するバイトを一度ダウンロードしたら、defineClass メソッドを使ってクラスインスタンスを生成する必要があります。実装の例を次に示します。 class NetworkClassLoader extends ClassLoader { String host; int port; public Class findClass(String name) { byte[] b = loadClassData(name); return defineClass(name, b, 0, b.length); } private byte[] loadClassData(String name) { // load the class data from the connection . . . } } 特定のディレクトリからクラスをロードするクラスローダを作成してみる。 MyClassLoaderのmainメソッドで、test.MyClassLoaderTargetをロードしClassを作成する MyClassLoaderはClassLoaderを継承したクラスで、loadClassメソッドをオーバライドし、c /mydoc/tmp/を優先的にロードするディレクトリとしている。c /mydoc/tmp/にクラスがない場合は、ClassLoaderのloadClassメソッドを実行する ClassLoaderのloadClassメソッドでは、キャッシュにあれば、そのクラスを返す。なければ親クラスローダに移譲する。なければシステムクラスローダを使ってクラスをロードする Class#newInstance()を実行して、インスタンスを生成する MyClassLoaderTarget#execute()を実行し、MyClassLoaderTarget2をnewしてexecute()を実行する 実行結果を見ると、MyClassLoaderTarget2のクラスローダは、MyClassLoaderであることがわかる。つまりクラスローダを使ってロードしたクラスから別のクラスをnewするときはそのクラスローダを使うことがわかる。クラスローダを作成すると親クラスローダはシステムクラスローダになる。 コンテキストクラスローダは明示的に使用しない限り、使われることはなさそう。 package test; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class MyClassLoader extends ClassLoader { private static final int BUFSIZE = 1024; private byte[] result; private int last = 0; @Override public Class ? loadClass(String name) throws ClassNotFoundException { Class ? c = null; try { c = findClass(name); } catch (ClassNotFoundException e) { c = super.loadClass(name); } return c; } private void dbg(String string) { System.out.println(string); } @Override protected Class ? findClass(String name) throws ClassNotFoundException { try { byte[] b = loadClassData(name); return defineClass(name, b, 0, b.length); } catch (Exception e) { throw new ClassNotFoundException(e.getMessage(), e); } } private byte[] loadClassData(String name) throws IOException { result = new byte[0]; last = 0; FileInputStream ins = null; try { byte[] buf = new byte[BUFSIZE]; int readSize = 0; name = name.replace('.','/'); File classFile = new File("c /mydoc/tmp/" + name + ".class"); ins = new FileInputStream(classFile); while((readSize = ins.read(buf)) != -1 ) { moveToResult(readSize, buf); } return result; } finally { if(ins != null) { ins.close(); } } } private void moveToResult(int readSize, byte[] buf) { byte[] tmp = new byte[last + readSize]; // 結果バイト配列をtmp配列の先頭にコピー System.arraycopy(result, 0, tmp, 0, result.length); // bufをtmp配列にコピー System.arraycopy(buf, 0, tmp, last, readSize); result = tmp; last += readSize; } public static void main(String[] args) { try { MyClassLoader loader = new MyClassLoader(); System.out.println("parent " + loader.getParent().getClass().getName()); Class ? clazz = loader.loadClass("test.MyClassLoaderTarget"); System.out.println("target class loader name " + clazz.getClassLoader().getClass().getName()); ((Executor)clazz.newInstance()).execute(); } catch (Exception e) { e.printStackTrace(); } } } package test; public class MyClassLoaderTarget implements Executor { @Override public void execute() { System.out.println("AAA"); MyClassLoaderTarget2 target2 = new MyClassLoaderTarget2(); target2.execute(); System.out.println("target2 class loader name " + target2.getClass().getClassLoader().getClass().getName()); } public static void main(String[] args) { MyClassLoaderTarget target = new MyClassLoaderTarget(); target.execute(); } } package test; public class MyClassLoaderTarget2 implements Executor { @Override public void execute() { System.out.println("BBB"); } public static void main(String[] args) { MyClassLoaderTarget2 target = new MyClassLoaderTarget2(); target.execute(); } } package test; public interface Executor { public void execute(); } 実行結果 parent sun.misc.Launcher$AppClassLoader target class loader name test.MyClassLoader AAA BBB target2 class loader name test.MyClassLoader ThreadLocal スレッドに固有のオブジェクトを保管するために使う(Thread Singleton)。Servletの中で、使用例としてDBに対するConnectionをスレッド毎に保管する場合があげられる。この場合、引数にConnectionを作成すると全てのメソッドにConnectionの引数が必要になり手間がかかる。スレッドにプライベートフィールドを作成して保管できないときに使える。 JDBC 参照 タイプ 説明 備考 type2 ベンダのライブラリと共同して、DBと通信。ベンダのクライアントアプリが必要。 type4 直接DBと通信。JDBCドライバサイズが大きい バッチ insert, updateが連続して行われるときにネットワークトラフィックを削減するために使う。PreparedStatementオブジェクトに対して、addBatch(), executeBatch()メソッドを使うと複数のステートメントをまとめてDBサーバ送信する。 言語コード コード名 説明 Windows-31J ShiftJISの拡張。NEC特殊コードもサポート。 スレッドダンプ 稼働中のスレッドを標準出力にダンプする。 kill -3 プロセス番号 出力例 daemon以外のスレッドを見る。以下の例ではSNMP APIで停止している。 Full thread dump Java HotSpot(TM) Server VM (11.2-b01 mixed mode) "RMI Scheduler(0)" daemon prio=10 tid=0x0955e000 nid=0x15db waiting on condition [0x30cd1000..0x30cd1fa0] java.lang.Thread.State TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for 0x37f243d8 (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java 198) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java 1963) at java.util.concurrent.DelayQueue.take(DelayQueue.java 164) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java 583) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java 576) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java 947) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java 907) at java.lang.Thread.run(Thread.java 619) "Thread-7" prio=10 tid=0x0954bc00 nid=0x15bf in Object.wait() [0x30eb7000..0x30eb7ea0] java.lang.Thread.State TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on 0xa89ec300 (a com.adventnet.snmp.snmp2.SnmpCallback) at com.adventnet.snmp.snmp2.SnmpCallback.sleepUntilNotified(SnmpCallback.java 166) - locked 0xa89ec300 (a com.adventnet.snmp.snmp2.SnmpCallback) at com.adventnet.snmp.snmp2.SnmpCallback.run(SnmpCallback.java 152) アノテーション 注釈。プログラムに影響を与えない。プログラムから読める。コンパイラの動作に影響を与える。 @Override Overrideアノテーションを付加したメソッドがオーバライドメソッドでなければコンパイルエラーになる。 @SuppressWarning Xlintを指定したときに発生する警告メッセージを抑制する。 アプレット jarファイルを指定するには、ARCHIVEタグを使う。CLASSPATHはきかない。 セキュリティポリシー java.policyファイルの構文 grant signedBy "signer_names", codeBase "URL", principal principal_class_name "principal_name", principal principal_class_name "principal_name", ... { permission permission_class_name "target_name", "action",signedBy "signer_names"; permission permission_class_name "target_name", "action",signedBy "signer_names"; ... }; ここで、"signer_names"、"URL"、principal_class_name、"principal_name"、permission_class_name、"target_name"、"action"、"signer_names"は、変数。 signedBy 、codeBase、、principal は省略可能。 意味は、signer_namesで署名されたURLにあるプログラムが、permission_class_nameで規定されるtarget_nameに対して、actionすることを許可する。target_name, actionについては、permission_class_nameのAPIを参照。 http //java.sun.com/j2se/1.5.0/ja/docs/ja/guide/security/PolicyFiles.html 参照。 例 permission java.io.FilePermission "\\\\192.168.1.40\\-", "read,write"; 192.168.1.40のリモートファイルに対する読み書きを許可する。 Linux firefoxへのJava Plugin インストール 例 # ln -s /usr/java/jdk1.6.0_20/jre/lib/i386/libnpjp2.so /opt/firefox/plugins インストールの確認 urlにabout pluginsを設定して開く Linuxでのplugin コントロールパネル 起動 $JAVA_HOME/bin/ControlPanel を実行 最大メモリ容量の修正 "-XX MaxPermSize=256m"をJavaタブのアプレットパラメータに追加 その他 スタックトレースをStringに変換する 仕事の都合で、最後の行で改行を削除してタブをスペースに変換している。 private String getStackTraceAsString(Exception e) { ByteArrayOutputStream ostream = new ByteArrayOutputStream(100); e.printStackTrace(new PrintStream(ostream)); String sep = System.getProperty("line.separator"); return ostream.toString().replaceAll(sep, "").replace("\t", " "); } 固定長レコードのファイルを出力 package test; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; public class SingleFille { private BufferedOutputStream bstream; /** * ファイルに書き込むデータ * 桁数 * 内容 */ private String[][] data = { {"aaa1", "bbb1", "ccc1"}, {"漢字2", "bbb2", "ccc2"}, {"aaa3", "漢字3", "ccc3"}, {"aaa4", "bbb4", "漢字4"}, }; /** 列の桁数 */ private int[] length = {10, 20, 30}; /** ファイルオフセット */ private int offset = 0; private static final String FILE_PATH = "singleFile.dat"; public static void main(String[] args) { SingleFille sfile = new SingleFille(); try { sfile.execute(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void execute() throws IOException { File file = new File(FILE_PATH); try { FileOutputStream stream = new FileOutputStream(file); bstream = new BufferedOutputStream(stream); for(int i = 0; i data.length; i++) { String[] line = data[i]; putFile(line); } } catch (IOException e) { throw e; } finally { if(bstream != null) { try { bstream.close(); } catch (IOException e) { throw e; } } } } /** * @param line * @throws IOException */ private void putFile(String[] line) throws IOException { for(int i = 0; i line.length; i++) { //各列を桁数になるように整形 byte[] term = createTerm(line[i], i); bstream.write(term); offset += term.length; } } /** * @param term * @param index * @return * @throws UnsupportedEncodingException */ private byte[] createTerm(String term, int index) throws UnsupportedEncodingException { //項目を格納するバイト byte[] outterm = new byte[length[index]]; //項目をShift_JISのバイトに変換 byte[] interm = term.getBytes("SJIS"); for(int i = 0; i outterm.length; i++) { if( i interm.length) { outterm[i] = interm[i]; } else { //残りはスペース outterm[i] = 0x20; } } return outterm; } }
https://w.atwiki.jp/wiki6_takt/pages/9.html
Eclipse Eclipse起動オプション Eclipse.exe -VM c \java\javaw.exe -VMargs -Vms256M -Vmx512M -VM JVMの指定 -VMargs JVMへの引数 [-Vms 最小HeapSize][-Vmx 最大HeapSize] 文字化け WebSphereなどのIBM製品を使用し、Windows環境で作成した「shift_jis」文字CODEと 「euc」や「iso2022-jp」文字CODEのテキストとの相互変換を行い文字化けをする時があるようで対象となる文字は・・ 「∥」二重縦線 「~」波線 「-」記号(マイナス) 「¢」記号(セント) 「£」記号(ポンド) 「¬」記号(ノット) 理由は、Windows環境で作成した「shift_jis」の文字CODEが、 「MS932」文字CODEとして保存される為。 □補足 「MS932」文字CODEとはMicroSoft社が定義をした文字CODE。 上記の6文字の文字CODEが「shift_jis」と異なる。 他に"①"などの機種依存文字も含む文字CODE。 「shift_jis」, 「euc-jp」, 「iso2022-jp」は, 「JIS X 0208」として定義されている。 各文字コード一覧 MS932 SJIS EUC-JP ISO-2022-JP ~ 0xFF5E 0x301C 0x301C 0x301C ∥ 0x2225 0x2016 0x2016 0x2016 - 0xFF0D 0x2212 0x2212 0x2212 ¢ 0xFFE0 0x00A2 0x00A2 0x00A2 £ 0xFFE1 0x00A3 0x00A3 0x00A3 ¬ 0xFFE2 0x00AC 0x00AC 0x00AC □文字化けの原因 IBM製品で取り扱う文字コードの種類は 「MS932」「shift_jis」「euc-jp」「iso2022-jp」と4種類あり(utf-8とutf-16は除く)、 「shift_jis」「euc-jp」「iso2022-jp」の3種類の中で相互に文字CODEの変換を行う分には文字化けはしないが、「MS932」との変換を行うと文字化けする。 つまり MS932←→shift_jis MS932←→euc-jp MS932←→iso2022-jp は、文字化けする。 shift_jis←→shift_jis/euc-jp/iso2022-jp euc-jp←→shift_jis/euc-jp/iso2022-jp iso2022-jp←→shift_jis/euc-jp/iso2022-jp は、文字化けしない。 □ASTERIAの各バージョンによる文字コードの取り扱い ASTERIA R2で使用する文字コードは以下のようになります。 "shift_jis"→MS932文字コードとして取り扱いをします。 "SJIS"→shift_jis文字コードとして取り扱いをします。 "euc-jp"→euc-jp文字コードとして取り扱いをします。 "iso2022-jp"→iso2022-jp文字コードとして取り扱いをします。 注)Windows環境で作成したテキストは"shift_jis"と指定するだけで読み込みが可能です。 ASTERIA 3で使用する文字コードは以下のようになります。 "shift_jis"→shift_jis文字コードとして取り扱いをします。 "Windows-31J"→MS932文字コードとして取り扱いをします。 "euc-jp"→euc-jp文字コードとして取り扱いをします。 "iso2022-jp"→iso2022-jp文字コードとして取り扱いをします。 注)Windows環境で作成したテキストは明示的に"Windows-31J"と指定することで読み込みが可能です。 "shift_jis"の指定の場合には上記文字コードの場合には文字化けをします。 ASTERIA R2とASTERIA3で指定方法が異なるのは、ASTERIAが使用しているJava環境のバージョンの違いによるものです。 □文字化けの解消 ASTERIAでMS932とshift_jis, euc-jp, iso2022-jpの相互に文字コードを変換する場合には、 別途提供しておりますJava関数を使用することで文字化けを解消することができます。 例) MS932文字コード ↓ Java関数(A) ↓ shift_jis euc-jp iso2022-jp shift_jis euc-jp iso2022-jp ↓ Java関数(B) ↓ MS932文字コード Java関数(A) MS932文字コードのテキストをASTERIAのString型に読み込むときにJIS X 0208として変換を行います。 この変換によりString型からshift_jis, euc-jp, iso2022-jpへの相互変換においての文字化けが解消いたします。 # #String s = in[0].strValue(); #int len = s.length(); #StringBuffer buf =new StringBuffer(len); #for (int i=0; i len; i++) { # char c = s.charAt(i); # switch (c) { # case 'uFF5E' c = 'u301C'; break; # case 'u2225' c = 'u2016'; break; # case 'uFF0D' c = 'u2212'; break; # case 'uFFE0' c = 'u00A2'; break; # case 'uFFE1' c = 'u00A3'; break; # case 'uFFE2' c = 'u00AC'; break; # } # buf.append(c); #} #out.setValue(buf.toString()); # Java関数(B) JIS X 0208のテキストをASTERIAのString型からMS932として変換を行います。 この変換によりJIS X 0208(String型)からMS932への変換においての文字化けが解消いたします。 # #String s = in[0].strValue(); #int len = s.length(); #StringBuffer buf =new StringBuffer(len); # for (int i=0; i len; i++) { # char c = s.charAt(i); # switch (c) { # case 'u301C' c = 'uFF5E'; break; # case 'u2016' c = 'u2225'; break; # case 'u2212' c = 'uFF0D'; break; # case 'u00A2' c = 'uFFE0'; break; # case 'u00A3' c = 'uFFE1'; break; # case 'u00AC' c = 'uFFE2'; break; # } # buf.append(c); #} #out.setValue(buf.toString()); # Java関数(A)ではinputdata_AにはMS932文字コードを含む文字列が定義されていることを想定し、outputdata_AにはJIS X 0208に変換したテキストを出力します。 Java関数(B)ではinputdata_BにはJIS X 0208を含む文字列が定義されていることを想定し、outputdata_BにはMS932文字コードに変換したテキストを出力します。 注)これらの関数は文字数が増加するに従い条件判断の回数も増加するため、処理速度は文字数に比例してかかることとなります。
https://w.atwiki.jp/rosapuni/pages/11.html
java メモ 参考リンク http //eclipsewiki.net/eclipse/index.php?FrontPage http //eclipsewiki.net/eclipse/index.php?FrontPage eclipse eclipseインストール http //www.eclipse.org/downloads/index.php Java開発であればEclipse IDE for Java Developers Tomcatなどサーバ系Java EE開発を望むのであれば、Eclipse IDE for Java EE Developers C言語/C++で開発したければEclipse IDE for C/C++ Developers リッチクライアントプラットフォーム開発やEclipseプラグイン開発をしたい場合は、Eclipse for RCP/Plug-in Developers jreインストール http //www.java.com/ja/download/manual.jsp Eclipseの導入ディレクトリのすぐ下にjreディレクトリを作り、そこに使用したいJREを放り込んでおけば、そのJREが使用されます リスト3 リスト4 リスト5
https://w.atwiki.jp/shells/pages/11.html
Java 目次 概要解説 参考サイト 環境JDK 用語 構文 実習 概要 解説 参考サイト Java入門 とほほのJava入門 TECHSCORE JavaでHelloWorld Javaの道 Java Solution @IT Java使用 Java Developer Connection Javaテクノロジ dev2dev Javaニュース JavaNews Javaメーリングリスト Java House サーブレット/JSP 基礎 基礎から学ぶ サーブレット/JSP 環境 JDK Java SE Development Kit 5.0 Update 15 First Costomer Ship 【参考】JDK 6のインストールと環境設定 用語 用語まとめ 構文 JSP構文 実習 @IT 基礎から学ぶサーブレット/JSP
https://w.atwiki.jp/a_kurosawa/pages/15.html
◆Java ◆Java日付の変換 Java SEとかEEとかSDKとかJDSとかJ2SEとかJREとかとか。 EnumクラスをStringにすると、変数の内容消える 自前クラスでのequalsはオーバーライドしないとちゃんと動かない 日付の変換 Date date = DateFormat.getDateInstance().parse(str); getDateInstance()←Date忘れないでね Formatを指定して変換 例えば、Tue, 04 Dec 2012 10 01 05 +0900のような形式。 SimpleDateFormat objFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH mm ss Z", Locale.ENGLISH); Date date = objFormat.parse(str); Local.ENGLISHないとフォーマットできないみたい。 参考 あー、超ハマった。 Java SEとかEEとかSDKとかJDSとかJ2SEとかJREとかとか。 Java SE Java SEとはStandard Editionの略です。 Javaの基本的な関数が入っています。 APIと呼ばれるものです。 例えば、java.lang.Stringとか Java.lang.Systemとかです。 String str = ""; str.equals("あ")とか System.out.print()とか使ったことありませんか? それです。 ちなみにJ2SEというのは、 バージョン1.5(5.0)までの昔の呼び方で、 今はJava SEで統一されているみたいです。 J2の後ろの部分がJava SEのSEの部分なので、 J2EEだったら下のJava EEのこと、 J2MEだったらJava MEと呼ばれるAPIのことです。 Java EE Java EEとはEnterprise Editionの略です。 JavaでWebサイトなどを作る際に必要な関数が入っています。 Servletとかjspの関数などが含まれています。 web.xmlなどをいじってServletクラスを作ったり、 StrutsやSeasarなどのライブラリを使ったことがなければ 縁のない関数かもしれません。 SDK SDKはSoftware Development Kit(ソフトウェア開発キット)の略です。 Javaに関わらずソフトウェアを開発するのに必要なツールが 一式入ってますよというものです。 なのでJavaだと、上で書いたJava SE(Standard Edition)も入っています。 他にはソースを*.classファイルにコンパイル(翻訳)するツール、 作ったアプリケーションを実行する環境などが入っています。 JDK JDKとはJava Development Kit(Java開発キット)の略です。 Javaを開発するのに必要なツールが一式入ってます。 Java専用のSDKということですね。 内容の構成はSDKと同じで、 標準API(Java SE) コンパイラ(*.javaのソースファイルを*.classファイルに翻訳するツール) 実行環境 などが入っています。 JDKはJavaの開発に必要な最低限のツール一式なので、 Java EEは入っていません。 もしかしたらアプレットを作るかもしれませんし、 Webではなく端末上で動くアプリケーションを作るかもしれませんからね。 それらは別途インストールしなければなりません。 補足ですが、JDKのバージョンは1.5、1.6、1.7などありますが、 それらは5.0、6.0、7.0とも呼ばれたりします。 まだ2.0まで行ってないので、1が略されてるみたいですね~。ややこしい。 参考 JRE JREとはJava Runtime Environmentの略です。 上のJDKの項目の実行環境の部分です。 例えば、eclipseなどでアプリケーションを実行する時に必要なツールです。 そのままですが。 コーヒーのマークのたまに更新の通知があがるあのツールです。 このJREにもJava SEやJava EEのように種類があり、 公開JREと非公開JREといいます。 JDKの中に入っているJREは、 JREの中でも基本的なものだけ入っている実行環境です。 これが非公開JREです。 ちなみに非公開JREはJDKの一部というイメージなので、 インストールしたりアンインストールしたりできません。 JDKをアンインストールしたら一緒に消えるという感じです。 更新の通知があがるツールは公開JREです。 参考 EnumクラスをStringにすると、変数の内容消える JavascriptでAjaxでSeasarのActionにアクセスし、 RESULTというEnumを作り、statusとmessageという変数を作成し、 RESULT SUCCESS(0, "成功しました。")のようなのを作って、 返しました。 JavaのEnumの王道の使い方だと思ってたのですが… ResponseUtil.write(JSON.encode(SUCCESS), "text/javascript"); のようにjavascriptに渡すと、 受け取った時に"SUCCESS"というString型になっていて、 statusもmessageもundefinedになります…。。 くそー、JavaのEnumはどう使えっちゅーんだっ 自前クラスでのequalsはオーバーライドしないとちゃんと動かない Javaではクラスは全てObjectを自動的に継承しているので、 equals()を使えるんだが、 そのまま使おうとするとパラメーターが全て一致していても falseが返ってくる。 これはアドレスを見ているからだ。 データが保存されたアドレスはクラスをnewする度に 全く同じインスタンスを比較しないとtrueは返らない。 そこで正しく動作するequals()を実装する為の システムがeclipseには備わっている。 ソースで右クリック→ソース→hashCode() 及び equals() の生成 これを実行するとhashCode()とequals()が自動生成されて 保持しているパラメータが全て一致していればtrueを返す equals()が使えるようになる。 ただし、参考演算子を使っていたり、 if (true) return false; のような括弧を使わないif文などが書かれているので チェックスタイルに引っかかる場合は 自分で直さなくてはいけない。
https://w.atwiki.jp/munchkin/pages/13.html
サン・マイクロシステムズが開発したプログラム言語である。 現在(2010/5)の時点では、最新版はJavaSE6である。(それに伴い、Java言語資格試験はJSE6対応になっている) 2010年秋に、JSE7がリリース予定である。 Javaの特徴としては、以下のものがあげられる。 オブジェクト指向 Java言語に関するリンク JavaLanguage
https://w.atwiki.jp/mixmusic/pages/29.html
JAVA ■java オブジェクト指向 セキュリティ構成やネットワーク関連の機能が標準搭載 javaソフトウェアはプラットフォームに依存しない ■platform アプリケーションソフトを動作させる際の基盤となるOSの種類や環境、設定のこと ■struts jakartaプロジェクトが開発したWEBアプリケーションフレームワーク ■tomcat JAVAサーブレット・JSPを処理するアプリケーションサーバ ApacheやIISのプラグインとして動作できる ■jakartaプロジェクト オープンソースのWEBサーバソフトなどを開発しているApacheプロジェクトのサブプロジェクト ■Apache WEBサーバ □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■ 開発環境構築手順 プラットフォーム(SW) OS : Microsoft XP Professional SP2 DB : Oracle 10g(10.2.0) SWIDE : Eclipse() ■SWIDE構築 ■JRE(1.4)インストール ■Eclipse()インストール ■Eclipse()の日本語化 ■J2SE SDK(コンパイラ・Java標準API・Javadocマニュアル) ※J2SE SDKマニュアル(日本語版) ■DB構築 ┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏用語解説┓┓┓┓┓┓┓┓┓┓┓┓┓┓┓┓┓┓┓┓ プラットフォーム(Platform) ・・・アプリケーションソフトを動作させる際の基盤となるOSの種類や環境、設定等 OS(Operating System) ・・・コンピュータシステム全体を管理するソフトウェア DB(Database) ・・・共有されるデータの集合 Oracle ・・・リレーショナルデータベース管理システム SWIDE(Software Integrated Development Environment) ・・・ソフトウェア総合開発環境 JRE(Java Runtime Environment) ・・・Java言語で開発されたソフトウェアを実行するために必要なソフトウェアのセット SDK(Software Development Kit) ・・・プログラミング言語やAPI等のテクノロジーを利用してソフトウェアを開発する際に必要なツールのセット □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
https://w.atwiki.jp/link_prog/pages/5.html
Javaについて書くページ Hello world! Javaの開発環境が整ったら、まずはハローワールドを出力してみよう。 public class HelloWorld { public static void main(String args[]) { System.out.println( Hello world! ); } } まずは上のソースコードをコピペして、HelloWorld.javaという名前で保存。 コマンドラインで、 javac HelloWorld.java と打ち込んでエンターキーでコンパイル。 次に java HelloWorld と打って実行する。正しくできていれば Hello world! と出力される。
https://w.atwiki.jp/4kamemo/pages/16.html
Javaの環境設定 ↓のリンクを開く JavaSDK 【Accept License Agreemen】承認を選択して自分の環境に合ったものをダウンロードする 大体の人はこの辺りだと思います 後はダウンロードしたファイルを実行してください こんな感じのものが出来たと思います 次はJavaをPathに通してください。 ↑お決まりの手順だと思ってください。 次に環境変数を設定します。 (失敗したこと無いのですが、失敗すると面倒なことになりそうなので注意してください。) ここで必要な作業は、PATHという環境変数にjavac.exeなどのコマンドが存在する場所を設定することです。 この作業に誤りがあると、コマンドプロンプトでjavacコマンドを実行しても、 「内部コマンドまたは外部コマンド」というエラーメッセージから抜け出すことはできません。 コンピュータを右クリックして【プロパティ】を選択してください システム詳細設定を選択してください。 画面はwindows7です。 環境変数を選択してください 環境変数の設定画面が開きます Pathを選択して、編集ボタンを押してください Pathの編集画面が出てきます 「変数値」のところには何か入力がされていると思います。 これが現在設定されているPathの値です。最初から入力されている部分を消さないように注意して最後のところに 「C \Program Files\Java\jdk1.7.0_45\bin;」を追加して下さい (JDKをインストールしたディレクトリに合わせて設定する値は変更して下さい)。
https://w.atwiki.jp/questjava/pages/9.html
Javaにはライブラリが多く存在します。 それらを活用することが出来て初めて脱初心者です。