对java和c++之间有感,业务和技术,上层逻辑和底层交互

    最近做了几个项目,都用到了与java之外的东西,主要是与硬件交互。java做的主要是与业务相关的逻辑,但说到与硬件交互方面,java直接就什么忙也帮不上了。有个项目虽然未与硬件直接交互,但也间接操作硬件,对于我来说,都是java上的短板。

    现在来排列一下几个项目用到的非java技术吧。一是与led交互,需要与led进行通信以发布信息,这需要与相应dll交互;二是与m1卡类操作,也需要与dll交互;三则是一个与网络和串口相关的,需要读写串口数据。这三个项目,最终的解决方案都不是java版,作为使用的硬件厂商,由于种种原因,厂商也不能提供一些的帮助。最后只能靠公司自己来解决这个问题。
    最后的解决方法,第一个由兄弟公司请一个vb外援解决了;第二个准备实现一个activex版的界面程序;第三个请了一个作vc的外援解决此问题。都不是java实现,而且……最终的成品,也得不到最终的保证,仅仅是能用罢了。

    单就这几个项目而言,最主要的问题,不是说自己的开发人员不懂c++那么高的技术程序,而是根本不需要单独就一个硬件交互问题就推到c++版来处理。最终的问题仅仅是不知道如何使用c++来与这些硬件交互,或者说仅仅是不会调用c++的相关函数,不会使用c++而已。交互逻辑,业务逻辑,完全没有问题,仅仅是不能实现罢了。

    后来,慢慢地也看了几本c++的书,包括对照别人的代码做了一些的改进。对于上面的一个项目,我们甚至实现了一个jni版的java程序。从最开始的学校教的c++,到最后网上找到的jni编程手册,发现我们只需要实现一个最基本的语言级调用,而并不需要实现多么复杂的功能。单就实现jni而言,并不需要底层再实现什么功能,而仅仅是将一些调用接口用c++实现了一次而已。

    但又有一个问题,我们是否需要完全将这个模块c++化呢?一开始是有这个想法,仅仅是技术人员一相情愿的想法。但是,如果刚接触c++就想用c++写一个独立的程序,那不是一个已经工作了2 3年的技术人员应该做的事情。还有更重要的事要做,并且我们在java方面如此的精通,什么业务,什么逻辑,在java上能够实现得再不能完美了。如果换一种语言,换一种技术,这种技术成本,不是一个小公司能够接受的。

    又回去研究了一上jni,以及购买c++ primer好好学习一番。最后的结论,不要想什么c++ activex,也不要想什么mfc,我们只需要java applet,只需要能够简单的实现相应功能的一个applet。主要逻辑和主要业务还是在bs端。尽管这会有问题,有客户端安装jre的问题,有需要安装相应jni dll的问题,有重复加载dll错误问题,这些问题是项目技术实现必须要解决的问题。这样的成本,比独立实现c++要方便一点。

    看多了c++,真有点后悔当初学习java了。不过,上了贼船这么久,下不来了。真正的技术,到了最后,还是算法和数据结构才是王道。但凡复杂一点的项目,无非都是算法和数据结构的成品。那么无尽的业务,无尽的增删改查,还是算了吧。

    业务和技术,上层逻辑和底层交互,体现的不一样的开发思想,也体现了不一样程序走向。当然,要想赚钱,业务才是王道;还想赚钱,不要当程序员。
    有感而发。

转载请标明出处:i flym
本文地址:https://www.iflym.com/index.php/code/understand-java-and-c-plus-plus-about-business-and-technology-or-upon-logic-and-lower-interaction.html

相关文章:

作者: flym

I am flym,the master of the site:)

发表评论

电子邮件地址不会被公开。 必填项已用*标注