之前一段时间,看了很多关于Java的资料,什么《代码整洁之道》,什么《Java Concurrency In Practice》,然后还有各种设计模式。那时候我想:要是我java学的6,是不是安卓就是小case了?
一直到打算看JVM,才如梦终醒:安卓用的是Dalvik 和ART啊,压根不是JVM,连底层都不一样,那些J2EE的东西能套用吗?
答案自然是不能。
且不说java只是安卓的一部分,就算只看安卓里的java,和J2EE的环境的java也不一样:
- 对内存敏感;
- 对依赖敏感;
- 轻量化。有些小App可能并不需要什么设计模式和各种基类以及接口,也不需要太高端的架构。当然,如果想要做比较大型的App,这些还是必要的,可维护性和可扩展性会强很多。
举个例子,J2EE里面使用enum毫无顾虑,因为可以使得代码更具可读性;但是安卓要三思后行,因为enum会增加apk大小。很多J2EE可以不在乎的东西,安卓需要考虑,因为是在手机上运行。
当然,也不是说要为了性能放弃可读性。就算App用机器码写好,速度飞快,然而没人看的懂也是白搭。所以要考虑到一个度,或者说平衡。
比如代码拆得细,符合SRP,但是调用是花时间的,可能效率就不如不拆。
总而言之,不能生搬硬套地把J2EE的东西用到安卓里面,安卓有自己的java生态。