首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA的艰难分析

2013-11-21 
JAVA的困难分析?第三,所谓的批量数据大都是结构化数据,JAVA提供了强大的类概念,可以自由地定义数据结构。但

JAVA的困难分析

?

第三,所谓的批量数据大都是结构化数据,JAVA提供了强大的类概念,可以自由地定义数据结构。但是,程序中用到的数据结构必须在编译前设计好,不能由某个语句临时产生,即不支持动态数据结构。而实际运算过程中的动态数据结构要求比比皆是。我们经常需要新的数据结构来描述返回的结果集,有时还需要在现有数据结构上添加计算字段以方便计算,没有动态数据结构的支持,所谓的批量结构化数据运算就成了空话。

但是,SQL能够很好地满足这一要求,select语句会自然地创建新数据结构,几乎所有数据库都支持用语句动态创建/修改表和临时表。

?

如果我们把SQL和JAVA的优点都保留,发明一种即支持基础批量数据计算类库、表达式参数机制和动态数据结构,又支持计算分步、一致的有序集合对象、对象引用机制等运算机制的程序语言,是否就能很好地解决数据计算的困难了?

1 楼 spiniper 昨天   对于楼主的观点,我用两个字来形容,就是肤浅,虽然这么说你会不好受,不过我感觉就是如此,对此我表示歉意,下面来说我的理由:
1、你吧sql与java放在一起做这种比较,本身就是不合适的,sql是个脚本语言,临时解析临时使用,从这个观点来看,它的每次只需都要完成一次解析工作,java是直接编译成字节码(类计算机语言),从执行效率上,java肯定是要快过sql的,当然这里不讨论sql的缓存与内部解析逻辑的存储。
2、阁下对java的语法的使用比较僵化,对的,java确实不支持表达式作为参数传入,但是java支持对象作为参数传入,对象可以封装和解析表达式,并且使用面向对象话的装饰器模式,可以完成操作的替换和结合,因此这并不是两个语言在操作上的优劣。
3、对于大数据量的批量处理,这种玩意其实对于任何语言来说,都是一种挑战,包括sql,也许sql对它进行了一些人性化的语法处理,但是并不能解决根本问题(执行效率和资源占用),它根本取决于算法和针对性的处理设计,而sql作为一个脚本语言,是很难在这方面做出更多努力的,java却可以。而且你要认清sql是脚本语言,也许它的底层解析与执行,很可能就是java模块,例如oracle一部分就是java写的,所以pl-sql的解析引擎和执行引擎就是java,当你在oracle中输入一段sql并打算处理数据时,很可能就是一段java代码对sql完成解析,然后将其变成java模块完成内部调用。对于这一点,很多纯java写的支持sql数据库,这里我也不多说了。
4、对于你的期望,希望同时保留sql与java的优点,这并不取决于某java类库,也不取决于sql,这取决于你的设计和功能的理解,你可以讲更业务的东西放在java中,讲更数据的东西放在数据库中,这本身是一个世界性的难题,将业务与底层数据隔离的防御式编程是大家都在努力的目标,不然也不会有hibernate之类的框架的出现,当然hibernate在这方面已经做得很好。
最后,说一下为什么使用数据库的sql会更快,这很简单,因为数据库离数据更近,而你使用java来处理数据的时候,更多都要与数据库建立connection和一些更多消耗资源的操作,这些都会导致执行效率的下降和更多资源的使用,至少你在java中处理数据会平凡的与数据库建立connection与I/O,而在数据库中完成数据处理再返回结果,这样纸建立一个connection与少量I/O,这样当然快。

热点排行