用javac编译生成不同版本的源码和目标class

 转载请自 Ken Wu`s Blog

 

合理使用javac的source和target选项, 可以使程序的兼容性得到提升.比如, 你写了某个方法, 命名为assert, 该source能通过1.3编译, 而后, 1.4将assert加入到了关键字列表.
此时, 你再用1.4编译时, 就会出错了.

同样地, 1.5之前因为没有引入enum关键字, 如果你的代码中使用了, 那在1.5之后编译就会错误.
解决这个问题的方法, 就是使用 source 选项. Javac -source 1.3 classFileName.-source 选项, 指定源码版本.

-target 选项, 指定目标class版本. 如果已经指定了source版本, 那target版本不能低于source.target选项也是一个对javac来说很灵活的设置.
你可以做到, 用低版本的source编译出高版本的class. 很有趣哦! 不同版本的javac, 默认source与target选项值

JDK/J2SDK Default Source Source Range Default Target Target Range
1.0.x 1.0 1.1
1.1.x 1.1 1.1
1.2.x 1.2 1.1 1.1 – 1.2
1.3.x 1.2/1.3 1.1 1.1 – 1.3
1.4.x 1.2/1.3 1.2 – 1.4 1.2 1.1 – 1.4
5 1.5 1.2 – 1.5 1.5 1.1 – 1.5
6 1.5 1.2 – 1.6 1.6 1.1 – 1.6
7 1.7 1.2 – 1.7 1.7 1.1 – 1.7


经过不同版本编译后的class文件版本, 各是多少呢?

Target Major.minor Description
1.1 45.3 The original shipped
version.
1.2 46.0 Supports
the strictfp modifier.
1.3 47.0 Small update.
1.4 48.0 Small update.
5 (1.5) 49.0 New
attributes
to support generics and other features. Many more strings
accepted as legal identifiers.
6 (1.6) 50.0 StackMaps are supported.
7 (1.7) 51.0 invokedynamic is
supported.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值