最近因为工作需要,要对J2Objc做一些研究,到网上查了一下资料不是很多,只能参考他们的内容和google主页上资料自己摸索一下。下面将这七八天的学习中碰到的问题以及经验贴出来和大家分享一下,希望能有更多地人进行沟通交流。因为虚拟机和苹果系统的安装过程也出现了不小的问题,所以在这里也把虚拟机以及MAC系统的安装也大致贴出来(主要是会碰到的一些会折腾人的小问题)。
首先,是虚拟机和MAC系统的安装,一开始自己带着兴奋的心情和tinkpad去安装MAC系统,但是装了好久总是装不上,后来发现自己的电脑是奔腾的T4450的老处理器,不支持虚拟化,暗骂XXX,换个机器再搞。其实网上介绍虚拟机以及黑苹果的资料的比较多,不同的版本都会给出不同的解决方案。自己也试了几种,但是并不是他们的方案都能解决问题,最后我用VMWare9.0,然后打上上MAC补丁,这两个内容的下载可以才考“网址一”。然后下载MAC系统的dmg格式,准备好以后就开始安装啦。。。
虚拟机与MAC系统的安装配置
1、环境配置参数
CPU(I3)+VMWare9.0+MAC.OS.X.10.6.3.Retail
2、安装虚拟机
2.1安装步骤(略)
2.2注意问题
(1)CPU等硬件要支持虚拟化,奔腾系列支持虚拟化的CPU要T6550以上;
(2)硬盘的sici设置为sici 0:8,虚拟硬盘大小设置为40G以上(推荐60G),内存设置2G以上;
(3)给虚拟机打补丁,让虚拟机能够安装MAC系统。
3、安装MAC系统
3.1安装步骤(略)
3.2注意问题
(1)MAC系统中的鼠标和键盘不能用,则要进行如下修改:找到guestOS = "freebsd-64" 一行,将 freebsd-64 改为 darwin10;同时在后面加入keyboard.vusb.enable = "TRUE"
mouse.vusb.enable = "TRUE"
3.3总结
总的来说虚拟机下安装MAC会碰到不少的软硬件问题。经过试验之后可以综合以下两个网址的内容来完成。
网址一 http://blog.csdn.net/wswqiang/article/details/6684632
网址二 http://diybbs.zol.com.cn/1/34037_699.html 。
虚拟机可参照网址一的前半部分,MAC安装可参照网址二的后半部分。
然后是MAC系统中的Eclipse和J2Objc的环境配置,这里面也有很多吭小伙伴的东西,主要是因为没用过MAC,很多操作思维定势在window上面的Eclipse,所以操作不是很快。
MAC系统中Eclipse+J2Objec配置
参考网址:
http://hsapkota.com.au/index.php/projects/20-j2objc-eclipse-plugin-howto
1、安装Eclipse for MAC
打开safri搜索Eclipse for MAC,在Eclipse官网上有很多软件,为了避免要装java虚拟机,可以直接下载Eclipse IDE for J2EE版本。
下载网址:http://www.eclipse.org/downloads/?osType=macosx
我选择选择下图中的的第三个(根据自己的电脑选择32bit或者64bit)。
2、安装J2Objc插件
MAC系统下载后自动解压缩安装,等待解压缩完成直接打开Eclipse,在Eclipse中导入J2Objc插件。在Help=》Instal new Software=》添加如下网址:(http://j2objc-updatesite.hsapkota.com.au/4.2
)或者(http://j2objc-updatesite.hsapkota.com.au/3.7
)安装好插件。
3、配置J2Objc编译环境
配置J2Objc的编译环境。(注意Eclipse for MAC的Reference与window下的位置不同,MAC下的Reference在黑苹果标志旁边的“Eclipse”下的系统偏好设定,打开才是Reference)打开J2Objc的解压地址拷贝到编译地址中。如下图所示:
最后,准备工作做好了,下面就是讲java的代码转换为Object代码
J2Objc将JAVA转为Object C结果
转换的方法很简单,讲方法和类写好以后,直接点进项目右键点击J2Objc即可,如下图所示:
下面是一个简单的代码转换的例子:
普通实体类转换
People.Java
package com.test.jobjc;
public class People {
public int age;
public String name;
public boolean sex;
}
People.h
//
// Generated by the J2ObjC translator. DO NOT EDIT!
// source: /Users/wwtt/Documents/workspace/TestJ2Object/src/com/test/jobjc/People.java
//
// Created by wwtt on 13-8-12.
//
#ifndef _ComTestJobjcPeople_H_
#define _ComTestJobjcPeople_H_
#import "JreEmulation.h"
@interface ComTestJobjcPeople : NSObject {
@public
int age_;
NSString *name_;
BOOL sex_;
}
@property (nonatomic, assign) int age;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) BOOL sex;
- (id)init;
@end
J2OBJC_FIELD_SETTER(ComTestJobjcPeople, name_, NSString *)
#endif // _ComTestJobjcPeople_H_
People.m
//
// Generated by the J2ObjC translator. DO NOT EDIT!
// source: /Users/wwtt/Documents/workspace/TestJ2Object/src/com/test/jobjc/People.java
//
// Created by wwtt on 13-8-12.
//
#line 1 "/Users/wwtt/Documents/workspace/TestJ2Object/src/com/test/jobjc/People.java"
#include "People.h"
#line 3
@implementation ComTestJobjcPeople
@synthesize age = age_;
@synthesize name = name_;
@synthesize sex = sex_;
- (id)init {
return [super init];
}
- (void)copyAllPropertiesTo:(id)copy {
[super copyAllPropertiesTo:copy];
ComTestJobjcPeople *typedCopy = (ComTestJobjcPeople *) copy;
typedCopy.age = age_;
typedCopy.name = name_;
typedCopy.sex = sex_;
}
@end
PS:上面的MAC下的Eclipse的图片是我再网上截取的,因为在MAC上的qq因为版本问题老安装不上,所以也不知道怎么把图片截出来放上来,但是我看了一下,图片是一 模 一样的
PPS:上面转换后的Object的代码我还没有验证是否正确,有待下一步研究,但是里面有几个地方我觉得在运行的时候可能还要依赖J2Objc的包,具体的还没试验。
PPPS:我吧做好的东西给上头看了一下,没有回应,感觉好像实用性不是很大,不知道google以后会不会将这个产品做得更好更通用化,最好能直接在window平台上平滑使用