跳至主要内容

博文

目前显示的是 四月, 2007的博文

Java Obfuscator

不做JavaME的Java程序员一般可能不会去对自己的class文件做混淆处理。做JavaME的大部分都知道Proguard、RetroGuard等用于obfuscate的工具。去年我的Ant Build Script中就已经添加了对于Proguard的支持,不过这次为了做WB2这个游戏,又有几个地方需要调整。 1) 类太多,足足有接近30个class file。 这对于ME程序而言,太多了。Proguard又不太争气,我只好找了以前做Flynn时候用过的JAX再压榨一下。JAX是IBM很早以前在alphaWork上发布的一个混淆器,后来被集成到了WSDD (Websphere Device Developer)中,作为SmartLink组件,就再也没法下到了。 我手头用的JAX版本6.3只能支持JDK1.2 -_-||| 没办法,尝试了诸多方法之后,勉强还是可以用。以下命令可以执行JAX以GUI方式启动: # java -classpath $JAX_HOME/jax63.zip com.ibm.jax.GUI 不过Ant集成的task最好还是在命令行里运行,简洁又清爽: # java -classpath $JAX_HOME/jax63.zip com.ibm.jax.Batch 后来有个朋友给了我一个私房版本,是用JDK5.0重新编译过的JAX,不用替换JVM就能运行,而且META-INF里面也制定了MainClass为Batch,真棒! 折腾了足足两个钟头之后,将JAX加入了ant build: <target name="merge" if="flag.should.jaxmerge" description="Try to merge some classes using JAX"> <java jar="${lib}/${jax.jar}" fork="true"> <arg value="lib/${jax.conf}" /> </java> <delete dir="${classes}"/> <mkdir dir="...

Python IDE List

今天收到的来自comp.lang.python的讨论列表中,又看到了一个家伙询问使用哪种IDE比较合适。在社区中,这种讨论无疑又会引发editor war... Anyway,这不是重点,刚好有位兄台给了一个list,列举了绝大多数可用的Python IDE,觉得比较全,就摘抄过来。 Name Platform Notes ActiveGrid Linux/Windows/Mac Full featured, free (Apache licensed) IDE bundled with wxPython, features projects, scintilla, and debugging Anjuta Unix + GNOME Cross-language IDE; syntax coloring & folding for Python. BlackAdder Windows/Linux Commercial with all the features of IDLE, support for Ruby, and Qt GUI editor. BoaConstructor Python + wxPython RAD GUI building IDE, similar to Delphi. Code Crusader Linux x86 Commercial IDE with support to 30 other languages. CodeForge Unix Commercial cross-language IDE; nice multi-user project manager. DrPython Python + wxPython Simple, clean editing environment for Python intended primarily for use in schools. Eclipse Java + SWT See EclipsePythonI...

JVM suspend Thread

KJava的JVM实现有很多,Motorola在早期的V系列和Tripple里面用的好像是差不多的,后来有一部分使用了Linux+Java的实现,SonyEricsson的JVM是自己的平台,而Nokia的S40和S60系列也都各自用了一套。 Sun的规范虽然说明了正常情况下JVM应当实现的API,以及事件处理的顺序,但是并没有规定JVM应当如何处理一些特殊的情况——例如,startApp和pauseApp。最典型的例子就是手机对于下列情况的处理: incoming call 来电,一般的手机都会在来电的时候调用Canvas的hideNotify()方法,并在来电结束后提示用户是否继续程序,如果是,则调用Canvas的showNotify()方法继续。在这种情况下,有的startApp和pauseApp()的调用不是每个机型都实现的,甚至有的手机连hideNotify()和showNotify()都不实现。 receiving a message 根据我的经验,绝大多数手机都不会暂停应用程序的执行,可能有铃声或是图标闪动之类的提示。 power-save mode 节能模式的一个特征就是:如果用户在一段时间内没有对手机进行操作,那么手机就会降低能耗——例如,关闭背景灯,或是关闭屏幕。有的手机在这种情况下也会让JVM挂起正在执行的线程。 今天遇到了一个bug,就是由于power-save mode引起的——Motorola的E680/A780在进入节能模式之后会将MIDlet的线程挂起,而一般的游戏程序都会在主线程的run()中计算tick所花费的时间(可以计算FPS或是帮助计时)。由于线程挂起之前计算了一个时间,线程恢复执行之后获得了另一个时间,二者之间的差值非常大,这种情况下,应当作为例外处理,而不能当作正常值。

Exadel Open Source

Eclipse一直是偶钟爱的Java IDE,EclipseMe是开发JavaME所使用的插件,虽然有一些瑕疵,但总的来说它还是很顺手的。在开发JavaEE的项目时,曾经一度使用MyEclipse,不过由于这个工具是需要购买license的,所以总觉得不是很合适。后来有人推荐了 Exadel 给我,用了几个版本,基本上扩展性还是不错的。如今这个IDE貌似被JBoss开源了—— Exadel and Red Hat are Partnering to Open Source Exadel Studio Pro as Red Hat Developer Studio .