12.2. 开发语言及平台

简介:

语言只是一个工具,一种实现我们需要的工具,每种每言都有它的优点和缺点和,在不同领域发挥各自的长处,并且都有它存在的意义。

语言不段地发展,市场决定它们是生存还是没落走向死亡。只有最活越,生命力强的语言才能生存下来。.net与java后面是强大的财团做后盾,大量被捆绑的客户支持他,并有完备的客服,从商业角度选择它是没有错误的。

但不要拘泥与语言,使用你最熟悉的语言,选择你最擅长的数据库和操作系统。

目前大型网站都不会单一选择一种语言和数据库,一种操作系统。例如:

  • 淘宝,前端展示页面采用php,后台管理采用java...
  • Yahoo,主要使用php开发,但搜索引擎采用java...
  • Ticketmaster,前端展示采用perl开发,后台管理java, 前台展示数据库采用mysql,会员数据库采用oracle

像php/perl/python这种动态语言,开发速度快,周期端,对服务器性能要求低,出错率低,他们的设计这希望它能尽量使代码运行下去, 而不是抛出异常,终止执行或崩溃。而行对于开发者要求门槛比较低。 php 无论怎么开发都不会使web server 崩溃。而 Java 则不同,很容易崩溃。

Java 我认为java是个非常不错的语言,错在JVM上。这是一个垃圾的解释器,效率极差。不加优化的,把所有东东全部load进内存。采用java技术,开发成本相当高,对开发人员要求很高,而且需要一个稳定的团队。国内资深java开发人员大多转向管理层。 只有细心的人才能驾驭Java,否则不能保证软件质量,我在工作中发现php团队开发的代码质量明显比java高,bug 数量上比Java代码的 bug少很多。 我个人认为少于5年工作经验程序员很难写出一流的Java程序。 Java 架构最不能容忍的是有时不得不restart才能生效。而写的很烂程序你不得不采用restart来保证系统正常。

.net 不是很熟悉,.net 开发环境最好,速度比java快,只要有钱,全用正版,选择微软的产品很不错。很多linux爱好者鄙视M$, 对windows系统很有很大偏见,偏激。 window系统很稳定,并非像网上传的那样不堪一击,很多引起windows崩溃的原因是硬件问题。我在工作中发现国产服务器在板卡接口上做工不过关。 没有镀金或防氧化处理,导致内存丢失,cpu丢失,RAID丢失... 等等引起系统崩溃。但linux系统确能运行下去,不过一旦重启,将不能恢复。

12.2.1. 分层架构

12.2.1.1. 中间件 Middleware

http://en.wikipedia.org/wiki/Middleware

middleware.png

很多人谈到java就会涉及到三层架构即:web 容器 -> application server 应用服务器,中间件 ->数据库

三层架构其实不是什么新鲜东西,J2EE仅仅是对象请求代理体系结构的一种,任何语言都能实现三层架构。中间件不是Java专利

  • 编译执行的语言基本都支持Corba

  • python 则有Zope,Zope是一个很成功App Server。足以比肩J2EE. python 也支持corba库,我尝试过python -> corba -> PostgreSQL.但性能不佳。

php/perl 一样可做到,采用SOAP,XML-RPC等技术,可以实现部分功能。但我们可以在架构上做些改变。

总之,不要拘泥于三层架构,仅仅是实现方式的一种。没有最合理,也没有最好的,根据你的需求作出调整,最终是看结果,而不是实现过程。

12.2.1.2. 分层

中间件的概念

			
         /--> app server ---\
web ---> ---> app server ----> Database
         \--> app server ---/
			
			

php 分层

			
                 /--> web server ---\
load balance ---> --> web server ----> -> Database
                 \--> web server ---/

                 /--> web server ---\                   /--> app server ---\
load balance ---> --> web server ----> -- SOAP/XMLRPC--> --> app server ----> Database
                 \--> web server ---/				    \--> app server ---/
			
			

你可以采用复核型架构,我曾经就做过这样的项目php -> soap -> .net framework

			
                 /--> module ---\
apache ---> php ----> module ----> MySQL Database
                 \--> module ---> soap ---> IIS ---> DCOM ---> C# script  ---> SQL Server
                  \-> module ---> tomcat ---> jasper report ---> Oracle
			
			

我们系统有一个需求是,在php中创建word,excel文档,编辑文档,比较文档..., 我们需要调用office.dll实现

同时我们有一个报表系统,是通过jasper report 实现的

另外fastcgi

			
			    .--> fastcgi process ---.
			   /                         \
web server ---> ---> fastcgi process -----> Database
			   \                         /
			    `--> fastcgi process----'
			
			

12.2.2. Web 2.0

商业炒作产物,对于纯高技术的人来说,虚头

12.2.3. 云计算

云计算还是个概念,但在云计算大潮中,不支持云计算,显得没有技术含量。

被网络炒得“神乎其神”。起初我误以为是分布式计算的下一代,后来发现和分布式计算根本两个不同的东西。与网格计算/分布式计算扯不上边。

"云计算"这个词已经被泛滥使用,

比较靠谱是亚马逊EC2 其实就是一堆Xen虚拟机, Dell说他的刀片服务器是云计算,Vmware 也说是云计算,Oracle 说他的VirtualBox是云计算,说ZFS是云存储。我也说不清楚,自己斟酌。

12.2.3.1. 云计算的三种服务模式

IaaS,PaaS,SaaS

12.2.4. 跨平台

没有真正的跨平台语言,所谓跨平台都是忽悠人。

只要提供不同平台的编译器加条件编译,即可实现跨平台。或提供不同平台的解释器,也可一实现跨平台。

例如大家都很看中Java的跨平台,但想一下,这个“跨平台”是要打引号的,实际上这个跨平台准确的说是跨Sun提供的标准JVM平台,而非OS平台。只要某个JVM支持某个OS,你的程序才可以跨过去。如果JVM不支持这个OS平台,Sorry,你的程序不可能跨过去。 不信你去java.sun.com下载jre你会发现仅仅提供四个平台版本Linux,Mac OS X,Solaris,Windows

很多OS都不支持Java。如FreeBSD 就不支持Java,必须使用Linux glib 运行Java,效率很低,IBM用的是IBM 自己开发 JVM 至于他和Sun Java有什么关系,可能是授权。

只要能让你的程序翻译成JVM字节码,你的程序就可运行在JVM上。如:

php通过Quercus(http://quercus.caucho.com/)把PHP文件编译成.java文件,让后javac编译成class文件后在一些JavaEE应用容器中运行PHP程序

Jython可以将Python编译成java文件

JRuby可以将Ruby编译成java文件

虚拟机并非只有JVM,还有Parrot, Perl6 就是在Parrot虚拟机上实现的。

另外开发一种新语言也并非难事,只要你有时间精力投入我想不出3年,就可以打造一门新语言。

开发新语言也并非难事,只要你有时间精力投入我想不出3年,就可以打造一门新语言。

12.2.5. 编译语言比脚本语言安全

错!

编译不能保证代码安全,仅仅能保证你的代码不被人使用。

但目前中国人力成本相当的便宜,重新实现你的功能逻辑并非难事。所以只要你的网站上线,在很短的时间内就可以出现很多山寨版。

编译流行的原因是为了解决微机的速度以及存储问题,随着微机处理器技术突破,你根本不用担心速度问题。中型机与大型机领域脚本语言站多数。

12.2.6. 封装重用

重用可以减轻劳动,但过分重用,会牵一发动全身。

尤其对于二次开发者不熟悉你的系统,导致修改一个bug,又产生新的bug。

另外模板也不宜拆分的过于零碎。模本的组装,需要很多时间并很消耗你的资源。

12.2.7. 相关的工具

12.2.7.1. 开发工具

Mozilla Firefox 及扩展

  • Web Developer

  • Firebug 调试必备工具

  • YSlow 性能分析工具

  • Live HTTP Headers 相当于HTTP Sniffer嗅探器,可以跟踪HTTP协议头,调试cache时比较有用。

  • IE Tab 用于IE/Firefox之间切换

  • FoxClocks 如果开发工作跨时区,这个很有用

  • Foxmarks Bookmark Synchronizer/Weave 将开发资源放入书签,同时在开发团队中保持同步

  • Fasterfox 可以一显示页面载入时间,方便页面优化. 如果安装了YSlow可以不装这个插件。

  • FireFTP

  • Adblock Plus

  • flash block

  • Chat Zilla

  • Super DragAndGo

开发工具

  • visual studio 不必多说

  • eclipse 出身于Java但他不单单是Java开发工具,目前他已经是一个通用的语言IDE,我一直用eclipse写PHP,Python,Perl还有Docbook XML

  • TortoiseSVN 版本控制工具.

  • WinMerge 文件差异比较与合并 , Beyond Compare 我用过最好的比较合并工具。





原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

目录
相关文章
|
3月前
|
前端开发 JavaScript Java
一文了解主流开发语言都有哪些!
本文将综合探讨目前市场上最流行、最多人使用的几种主流开发语言,包括它们的特点、典型应用场景以及简单示例代码。
|
2月前
|
Dart 前端开发 Android开发
移动应用开发中的跨平台解决方案探讨
在移动应用开发领域,随着安卓和iOS两大主流操作系统的不断发展,开发人员需要面对不同平台的兼容性和适配性挑战。本文将探讨如何利用跨平台解决方案来简化移动应用开发流程,提高开发效率,并分析不同跨平台技术的优劣势,为开发者提供指导性建议。
16 1
|
1天前
|
XML 前端开发 JavaScript
前端开发语言有哪些?
前端开发语言有哪些?
5 0
|
11天前
|
前端开发 开发工具 Android开发
探索移动应用开发的未来:跨平台工具与原生系统整合
【4月更文挑战第30天】 在移动计算领域,应用的多样性及其开发模式一直在不断进化。本文旨在剖析移动应用开发领域的新趋势,特别是跨平台开发工具的崛起以及它们与原生移动操作系统之间的融合。我们将探讨如何通过这些工具实现高效的应用构建,同时保持与操作系统底层特性的紧密集成。文章还将展望移动应用生态系统的未来,包括新技术如何影响开发者和用户体验。
|
12天前
|
前端开发 开发工具 Android开发
移动应用开发的未来:跨平台工具与原生系统整合
【4月更文挑战第29天】 在本文中,我们将探讨移动应用开发领域的最新趋势,特别是关注跨平台工具的兴起以及它们如何与原生移动操作系统互动。随着技术的进步和市场需求的变化,开发者面临着在保持应用性能的同时,快速部署到多个平台的挑战。通过分析当前流行的跨平台框架如Flutter、React Native和Xamarin,以及它们与传统的iOS和Android操作系统之间的关系,我们旨在提供一个全面的视角来理解这一现象及其对未来移动应用开发的可能影响。
|
14天前
|
Rust 前端开发 安全
【专栏】WebAssembly将支持更多语言,结合低代码平台
【4月更文挑战第27天】WebAssembly是种虚拟机格式,用于在浏览器中运行编译后的C/C++、Rust等语言代码,提供高性能、高可移植性和安全性。其优势在于更快的执行速度、跨平台兼容及安全的沙箱环境。广泛应用在游戏开发、图形处理、计算机视觉等领域。未来,WebAssembly将支持更多语言,结合低代码平台,优化开发流程,同时应对优化编译和安全性的挑战,引领高性能网络应用新时代。
|
Java C# 开发工具
开发语言漫谈-C#
C#的#,字面上的意思就是++++
|
24天前
|
机器学习/深度学习 人工智能 大数据
开发语言漫谈-C++
C++最初的名字为“带类的C”
|
29天前
|
开发框架 小程序 前端开发
小程序全栈开发中的跨平台解决方案
【4月更文挑战第12天】本文探讨了小程序全栈开发中的跨平台问题,包括前端、后端和数据交互差异,并提出了解决方案:使用跨平台框架(如Taro、uni-app)、设计统一后端接口、创建API适配层以及利用云开发平台。这些方法旨在帮助开发者提高效率,实现一次开发多平台运行。随着技术进步,预计会有更多便捷的跨平台工具出现。
|
2月前
|
JavaScript Java PHP
主流开发语言和开发环境介绍
主流开发语言和开发环境介绍
46 0