论坛首页 编程语言技术论坛

java和C#的泛型比较

浏览 24365 次
精华帖 (18) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-01  
RednaxelaFX 写道
ray_linn 写道
mooniscrazy 写道
泛型也就那么回事吧。写代码方便而已。

写代码方便? 你再开玩笑吧?有了泛型写代码还的多打好几个字<...>呢,如果你这样看泛型,那你就根本没学好泛型

呵呵,说写代码方便也可以,典型的场景是声明了泛型容器之后,从容器取出元素的时候不必显式写类型转换。不过要注意的是Java泛型是擦除法,自己的代码里不写类型转换不代表没转换——编译器会插入相关的类型转换代码,来保证运行时的类型安全。
不过泛型确实不只是“写代码方便”那么简单就是了,呵呵。有没有人想过在.NET里用了泛型之后方法调用反而可能变慢?呵呵,要是一直有在用Mono的话就会知道我在说什么。


Mono现在怎么样?
0 请登录后投票
   发表时间:2009-04-01  
imjl 写道
RednaxelaFX 写道
ray_linn 写道
mooniscrazy 写道
泛型也就那么回事吧。写代码方便而已。

写代码方便? 你再开玩笑吧?有了泛型写代码还的多打好几个字<...>呢,如果你这样看泛型,那你就根本没学好泛型

呵呵,说写代码方便也可以,典型的场景是声明了泛型容器之后,从容器取出元素的时候不必显式写类型转换。不过要注意的是Java泛型是擦除法,自己的代码里不写类型转换不代表没转换——编译器会插入相关的类型转换代码,来保证运行时的类型安全。
不过泛型确实不只是“写代码方便”那么简单就是了,呵呵。有没有人想过在.NET里用了泛型之后方法调用反而可能变慢?呵呵,要是一直有在用Mono的话就会知道我在说什么。


Mono现在怎么样?



已经算是比较stable,实现了.net 2.0了吧
0 请登录后投票
   发表时间:2009-04-01   最后修改:2009-04-01
.NET从2.0开始有很长一段时间没有动过下面的虚拟机CLR,一直到3.5SP1的时候才顺带发布了2.0SP2,其中带有CLR的更新;但是MSIL指令集从.NET 2.0开始就没变过了。
这对Mono来说是件好事,因为在虚拟机层上他们可以集中精力去实现一个固定的标准,投入精力去满足标准和提高性能。虽然现在Mono还比CLR慢,不过速度提升的势头还是很不错的。
Mono目前没有实现CAS,只在当前的trunk里实现了CoreCLR的安全模型,包括沙箱、IL验证器之类。要等到Mono 2.6才会把这个安全模型正式发布出来。
Mono项目中的C#编译器已经基本实现了C# 3.0的支持,可以编译LINQ代码。VB编译器则支持到VB.NET 8。

Mono的类库有自己的特色。标准库方面,核心库实现得已经很多了;WinForms相关的API基本实现到了2.0水平,虽说实际用还是可能会碰到小问题;LINQ to Db的整合会在Mono 2.6实现;WCF和WPF没有实现的计划。在标准库之外,Mono还有许多自己的有趣的库,包括Gtk#、Mono.Options、CSharpEvaluator等。MonoDevelop的GUI就是基于Gtk#来做的,现在看来还不错。

我还没部署过XSP所以不太清楚对ASP.NET的支持到什么程度了,貌似……还成?
0 请登录后投票
   发表时间:2009-04-01   最后修改:2009-04-01
RednaxelaFX 写道
.NET从2.0开始有很长一段时间没有动过下面的虚拟机CLR,一直到3.5SP1的时候才顺带发布了2.0SP2,其中带有CLR的更新;但是MSIL指令集从.NET 2.0开始就没变过了。
这对Mono来说是件好事,因为在虚拟机层上他们可以集中精力去实现一个固定的标准,投入精力去满足标准和提高性能。虽然现在Mono还比CLR慢,不过速度提升的势头还是很不错的。
Mono目前没有实现CAS,只在当前的trunk里实现了CoreCLR的安全模型,包括沙箱、IL验证器之类。要等到Mono 2.6才会把这个安全模型正式发布出来。
Mono项目中的C#编译器已经基本实现了C# 3.0的支持,可以编译LINQ代码。VB编译器则支持到VB.NET 8。

Mono的类库有自己的特色。标准库方面,核心库实现得已经很多了;WinForms相关的API基本实现到了2.0水平,虽说实际用还是可能会碰到小问题;LINQ to Db的整合会在Mono 2.6实现;WCF和WPF没有实现的计划。在标准库之外,Mono还有许多自己的有趣的库,包括Mono.Options、CSharpEvaluator等。

我还没部署过XSP所以不太清楚对ASP.NET的支持到什么程度了,貌似……还成?


里面的net api库相当不错,比如flickr的
0 请登录后投票
   发表时间:2009-04-02  
RednaxelaFX 写道
.NET从2.0开始有很长一段时间没有动过下面的虚拟机CLR,一直到3.5SP1的时候才顺带发布了2.0SP2,其中带有CLR的更新;但是MSIL指令集从.NET 2.0开始就没变过了。
这对Mono来说是件好事,因为在虚拟机层上他们可以集中精力去实现一个固定的标准,投入精力去满足标准和提高性能。虽然现在Mono还比CLR慢,不过速度提升的势头还是很不错的。
Mono目前没有实现CAS,只在当前的trunk里实现了CoreCLR的安全模型,包括沙箱、IL验证器之类。要等到Mono 2.6才会把这个安全模型正式发布出来。
Mono项目中的C#编译器已经基本实现了C# 3.0的支持,可以编译LINQ代码。VB编译器则支持到VB.NET 8。

Mono的类库有自己的特色。标准库方面,核心库实现得已经很多了;WinForms相关的API基本实现到了2.0水平,虽说实际用还是可能会碰到小问题;LINQ to Db的整合会在Mono 2.6实现;WCF和WPF没有实现的计划。在标准库之外,Mono还有许多自己的有趣的库,包括Gtk#、Mono.Options、CSharpEvaluator等。MonoDevelop的GUI就是基于Gtk#来做的,现在看来还不错。

我还没部署过XSP所以不太清楚对ASP.NET的支持到什么程度了,貌似……还成?



asp.net支持不错。 www.mononet.cn就是一个例子。
wpf,wcf看起来mono不会支持。现在winforms的bug还很多,能解决大部分就不错了。

说实在cross-platform大部分都有各种各样的问题,不像说得那么好。
0 请登录后投票
   发表时间:2009-04-02   最后修改:2009-04-02
Miguel说Mono不会主动去实现WPF,除非有贡献者特别有爱自告奋勇去实现出来。但他同时也对Silverlight非常感兴趣,很热衷将Moonlight搞好。他有些有趣的打算,想将Moonlight带到桌面,甚至通过完全AOT模式编译来将Moonlight带到iPhone上(因为iPhone不允许第三方程序使用动态编译,所以要在iPhone上部署Mono就必须采用AOT而不能用JIT)。如果能成功实现Silverlight 2或3的进度,Moonlight倒像是个小型WPF了。

前面提到Mono的trunk里已经有CoreCLR中的安全机制的实现,也巧,.NET这边也在反思到底CAS是不是一个好的设计;在MIX09的CoreCLR session里,Brandon说.NET 4里的新CLR会考虑学习CoreCLR得到的经验,使用简化的安全模型。
0 请登录后投票
   发表时间:2009-04-02  
RednaxelaFX 写道
用于生成源码的模板的话,String Template如何?ANTLR也是用它来作为后端来生成源码的,可以说品质有保证。


头像呀, 你也喜欢皇? 我的最爱呀。 高达00 握手。
0 请登录后投票
   发表时间:2009-04-02  
xiaoyu 写道
头像呀, 你也喜欢皇? 我的最爱呀。 高达00 握手。

握手。皇小姐美甚。粉红也美甚。
(well还是不要在这帖灌水了……)

其实说到Java与C#的泛型比较,这帖里还没人提到协变和逆协变呢。虽然其实已经有协变的代码出现过……
0 请登录后投票
   发表时间:2009-04-02   最后修改:2009-04-02
RednaxelaFX 写道
xiaoyu 写道
头像呀, 你也喜欢皇? 我的最爱呀。 高达00 握手。

握手。皇小姐美甚。粉红也美甚。
(well还是不要在这帖灌水了……)

其实说到Java与C#的泛型比较,这帖里还没人提到协变和逆协变呢。虽然其实已经有协变的代码出现过……


钉宫病飘过(不过黑化钉宫砍了包子娘TAT)...协变嘛...偏题了吧
0 请登录后投票
   发表时间:2009-04-03  
量产型人型自走炮 写道
钉宫病飘过(不过黑化钉宫砍了包子娘TAT)...协变嘛...偏题了吧

但包子娘的人气不高吧?至少在我认识的人里她人气不咋……

协变哪里偏题了嘛,你看到C# 4.0之前C#的泛型都不是协变/逆协变的,而Java泛型则从出现就一直支持这两个功能。也是值得对比的地方哦~
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics