Java Class Version 研究
一:要解决的问题
我们在尝鲜 JDK1.5 的时候,相信不少人遇到过 Unsupported major.minor version 49.0
错误,当时定会茫然不知所措。因为刚开始那会儿,网上与此相关的中文资料还不多,现在好了,网上一找就知道是如何解决,大多会告诉你要使用 JDK
1.4 重新编译。那么至于为什么,那个 major.minor 究竟为何物呢?这就是本篇来讲的内容,以使未错而先知。
我觉得我是比
较幸运的,因为在遇到那个错误之前已研读过《深入 Java 虚拟机》第二版,英文原书名为《Inside the Java Virtual
Machine》( Second Edition),看时已知晓 major.minor 藏匿于何处,但没有切身体会,待到与
Unsupported major.minor version 49.0 真正会面试,正好是给我验证了一个事实。
首先我们要对
Unsupported major.minor version 49.0 建立的直接感觉是:JDK1.5 编译出来的类不能在 JVM 1.4
下运行,必须编译成 JVM 1.4 下能运行的类。(当然,也许你用的还是 JVM 1.3 或 JVM 1.2,那么就要编译成目标 JVM
能认可的类)。这也解决问题的方向。
二:major.minor
栖身于何处
何谓 major.minor,且又居身于何处呢?先感性认识并找到
major.minor 来。
写一个 Java Hello World! 代码,然后用 JDK 1.5
的编译器编译成,HelloWorld.java
view
source
< id="highlighter_634554_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://www.blogjava.net/Files/framework/clipboard.swf.zip" id="highlighter_634554_clipboard" type="application/x-shockwave-flash" title="copy to clipboard" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_634554" menu="false" src="http://www.blogjava.net/Files/framework/clipboard.swf.zip" height="16" width="16">
print
?
01.
package
com.unmi;
02.
03.
public
class
HelloWorld
04.
{
05.
public
static
void
main(String[]
args)
06.
{
07.
System.out.println(
"Hello,
World!"
);
08.
}
09.
}
用
JDK 1.5 的 javac -d . HelloWorld.java 编
相关文档:
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个java对象转换为字节序列,即java对象序列号,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象,即反序列化。
把Java对象转换为字节序列的过程称为对象的序列化。
......
文章出处: http://java.chinaitlab.com/base/807715.html
Java对象序列化是JDK1.1中引入的一组开创性特性之一,之前51CTO也曾介绍过Java序列化的机制和原理,这里我们将使用Person来发现您可能不知道的关于Java对象序列化的5件事。
实际上,序列化的思想是“冻结”对象状态,传输对象状态(写到磁盘、通过 ......
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。
一、Java编程入门类
对于没有Java编程经验的Java程序员要入门,随便读什么入门书 ......
package com.njty.util;
public class Test {
private static final double EARTH_RADIUS = 6378137;
private static double rad(double d)
{
return d * Math.PI / 180.0;
}
  ......