沙琪玛博客

欢迎光临到沙琪玛博客,沙琪玛主要关注Java JavaScript flash CS3,c++,vc++等语言,空间会不定时更新技术帖子,欢迎阅读指正!部分文章为转载,但已经注明出处,如有冒犯,请留言给我,我会在24小时删除!
posts - 3, comments - 25, trackbacks - 0, articles - 24

2011年3月23日

  今天看了java7的预览版,过一段就会出测试版,测试版应该不会再加功能,只是修改bug。今天研究的是java7的新功能jdbc4。JDBC4一个重要的新特性是在连接数据库后不用手动的关闭java.sql.Connection, java.sql.Statement, and java.sql.ResultSet这些对象。只要这些对象在try模块中声明,JVM会自动关闭这些对象。下面就是一个简单的例子:

public static void viewTable(Connection con) throws SQLException {

    String query = "select COF_NAME, SUP_ID, PRICE, SALES, TOTAL from COFFEES";

    try (Statement stmt = con.createStatement()) {

      ResultSet rs = stmt.executeQuery(query);

      while (rs.next()) {
        String coffeeName = rs.getString("COF_NAME");
        int supplierID = rs.getInt("SUP_ID");
        float price = rs.getFloat("PRICE");
        int sales = rs.getInt("SALES");
        int total = rs.getInt("TOTAL");
        System.out.println(coffeeName + ", " + supplierID + ", " + price +
                           ", " + sales + ", " + total);
      }

    } catch (SQLException e) {
      JDBCTutorialUtilities.printSQLException(e);
    }
  }
我认为这个功能很好,防止了忘记释放这些对象照成的内存消耗过大。在上面的代码中声明了一个对象stmt,在try结束后jvm会自动关闭它。可能大家还会有疑问,就是如果在try中出现了异常,还会自动关闭这些对象吗?答案是会关闭。大家如果有不同的看法,欢迎讨论交流。

posted @ 2011-03-23 16:58 沙琪玛 阅读(2514) 评论(17) 编辑

2011年3月22日

   前一段研究了一些百度地图,正好在闲暇时间总结一下,欢迎大家提意见。这是一个系列,叫玩转百度地图。具体会出几篇还不一定,我会慢慢的整理百度地图的功能,并一篇篇的记录下来。这是第一篇,不做过多的讲解,只是起一个引导,首先教大家如何在页面上显示一个百度地图。首先上一个实例,然后再一一讲解每句话的含义。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>
百度地图的Hello, World</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?key=46ce9d0614bf7aefe0ba562f8cf87194&v=1.1&services=true">
</script>
</head>
<body>
<div style="width:520px;height:340px;border:1px solid gray" id="container">
</div>
</body>
</html>
<script type="text/javascript">

var map = new BMap.Map("container");            // 创建Map实例
var point = new BMap.Point(113.6,34.7);    // 创建点坐标
map.centerAndZoom(point,15);                     // 初始化地图,设置中心点坐标和地图级别。
</script>

下面讲解一下这些代码:

1.<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&services=true">

是连接百度地图的js文件,我这里用的key是百度地图测试key。

2.<div style="width:520px;height:340px;border:1px solid gray" id="container">用来设置百度地图的显示大小,相信大家都能看的懂。

3.var map = new BMap.Map("container");            // 创建Map实例
var point = new BMap.Point(113.6,34.7);    // 创建点坐标
map.centerAndZoom(point,15);                     // 初始化地图,设置中心点坐标和地图级别。

point是一个经纬度点,Point(经度, 纬度)。

最后一句用来设置地图的缩放比例和地图的中心点。大家可以尝试调一下缩放比例,现在是15,越大缩放就越大。

好了,这一篇就讲这么多,下一篇准备讲在地图上怎样加一个缩放杆,这样就更加便于缩放了,希望大家继续关注!

posted @ 2011-03-22 16:46 沙琪玛 阅读(326) 评论(4) 编辑

2010年2月1日

     转至:http://java.csdn.net/index.php/2009/10/13/%E4%BB%8E%E8%AF%AD%E8%A8%80%E5%8D%87%E7%BA%A7%E4%B8%BA%E5%B9%B3%E5%8F%B0%EF%BC%9Ajava%E8%80%81%E7%9F%A3%EF%BC%8C%E5%B0%9A%E8%83%BD%E9%A5%AD%E5%90%A6%EF%BC%9F/

JDK6到JDK7竟然有四年多的跨度,而且新加入的特性,也并不是那么激动人心(相对于社区的期望和动态语言的快速发展),闭包(Closure)本来是一个万众期待的特性,在经过激烈的争论之后还是被放弃了。

  越来越多的人开始担忧JAVA的前途,我觉得,以目前的情况来看,JAVA在JVM上失去Number One的地位是迟早的事情,但我们不要忘了,这个有些老态龙钟的JAVA曾经的辉煌,以及它所背负的兼容性包袱。

  java的每一次版本递进,都要考虑对以前版本的语言兼容性、平台兼容性和移植兼容性。

  语言兼容性(language compability),要保证已有的词法、语法在新版本上含义不变;平台兼容性(platform compability),要保证新版本提供的API(比如java.util/java.io)与已有版本保持一致,原有程序不做改动,可以在新平台上运行,且行为一致;移植兼容性(migration compability),就是要求原有的程序可以逐步迁移到新的平台,而不是要改相关模块都必须改。以泛型为例,如果有两个不支持泛型的模块,用collection进数据交互,当其中一个模块升级到支持泛型后,是不会对另外一个模块产生影响的。

  其实不仅仅是java,任何一个软件系统,随着塞入的功能越来越多,都会逐渐变得臃肿不堪,因为没有哪个架构师有长线预测未来的能力。C的经典,是因为其语言特性的简单和时间稳定性,如果要把泛型、闭包、垃圾回收都加入到C,那么C就不再是C,而是C#。

  不过,对于开发人员来讲,我觉得没有必要悲观,也没有必要怀疑java的未来,或者准确的说,不要怀疑JVM的未来,java正在从一种语言(language),变成一个平台(platform)。Java7的虚拟机对多种动态程序语言增加了支持,也充分说明了sun(或者说oracle)的意图:java不是唯一,java和其它jvm兼容的语言也不是对立的,平台掌握在我手里,那么当然是语言越多越好。

  但开发人员也应该做出适当的调整,那就是应该分出一部分精力关注一下JVM的规范和其它语言的特性,既然有更多选择,那么也应该充分发挥各种语言的强项,拿合适的技术做合适的事情。

  也许再过若干年,我们会更关注JVM的版本而不是java的版本,java语言,也许就会变成一个参考实现(reference implementation),就像glassfish之于J2EE;或者,我们可以将java/groovy/scala各种语言真正无缝集成在一个源文件中(就像jsp和html一样)也为未可知。

  未来总是美好的,您觉得呢?

posted @ 2010-02-01 15:25 沙琪玛 阅读(33) 评论(0)  编辑