一、语言
:
PHP:
PHP产生与1994年,其语法混合了C、Java、Perl 和他自创的一些编程语法;PHP是嵌入在HTML中执行的;它也是一种解释性语言。早期的PHP并非完全的面向对象编程语言,到了PHP4以后的版本才开始有了面向对象的概念。
PHP主要在大型网站 和 小型网站 ,sns,互联网应用方面广泛使用,高手的待遇还是很给力的,不过上手容易,学的人也很多了,大多水平不高。
JAVA:
JAVA产生与1995年,JAVA语言和JAVA平台统称为JAVA;它语法与C语言和C++语言很接近,并且JAVA是面向对象编程语言,JAVA是编译性语言,可以先将JAVA源码编译成.class文件后,在JAVA虚拟机上解释执行。
Java主要在大型网站,政府项目,银行项目,大型企业级 ,android手机等大多都是大公司,钱多,当然java的人也多,竞争也更激烈,如果能力可以的话待遇还是可观的。
.
NET:
在.NET中,多种编程语言支持开发如:VB、C#、F#等等,通常我们都在使用C#编程,C#是为.NET平台专们打造的一种编程语言,产生与2000年。其语言语法和JAVA、C、C++相近,同样也是一种面向对象编程语言。C#同样需要编译为.dll文件,然后由.net框架中CLR编译执行。
.net主要在桌面服务器应用,网络通信应用(c++的人毕竟难找而且成本高,c#是一个很好的替代品),电子商务,医疗his,MIS管理信息系统,金融证券,教育软件,房地产建筑,企业级应用,普通web网站以及wp7开发以及马上来到的win8平板开发等 应用的广泛 大多都是中小企业,如果你能力不是很强的话 工资待遇也就一般(据我经验和同学的经验 1年左右的也就3k左右,3年以下的也就4-5k,3年多的也就5-6k,5年以上的也就7k-1w 这个是杭州目前的水平 当然高手和高学历的另算)。
.net大企业很少用,即使用也不是核心业务,大多都是做mis管理系统。所以中小企业才是net的主要应用地方。微软也是定位中小企业,毕竟中小企业占大半。
中小企业不会很重视技术, 他们重视的是业务和运营;
技术一招一大把, 技术问题都可以解决, 业务和运营才是赚钱的根本.
所以有机会 转运营和业务 是很好的选择。跟着微软走吃不饱,饿不死. 如果刚涉入.net建议转学java之类的,如果有3-5年还是继续深造吧,把高级的东西搞熟悉,还是很有钱途的!~~~ 而且现在很多初创企业,用。net也很多,大多有好的项目,但后期的融资也就指望风投之类的,技术待遇一时难以提高!
.net在企业级应用方面 已经超过了j2ee; 微软的企业级还是牛逼的 而.net最初设计面向的就是广大的中小企业级应用.
移动平台比较困难 ,.net要占优势; 软件方面.net也越来越多的;大型web应用,随着mvc的成熟和.net 4.5的发布
已经完全能够承载 ,但是,但是,web已经逐渐没落 移动互联网才是当下.所以 微软这方便必须努力了,否则.net开发者 可能会错失大好的机会!!!!!!!!!!
行业趋势,人力不可违,唯有适应之。 只看到.net转java ,php;很少看到 java,php转.net。
微软中国 到处在正版化先从政府开刀;估计很快到企业了。所以最近听很多同学说,他们公司要求转java.
不过,事实是事实,但是我想说的时候java ,.net,php都各自有应用的领域,不必纠结。
语言区分:
PHP、JAVA、C#这几种语言最大的区别就是执行方式的不同。其中还有一些语言本身的区别,比如是否为强类型、是否能动态编译、是否为多线程、是否为分布式、是否可移值等等。至于很多人说的性能上的问题,我认为语言本身上的性能问题差异并不大,关建在于写程序的人如何编写的代码。另外,在关于与语言结和的数据库方面也有一定的区别,PHP通常使用MySQL数据库,JAVA通常使用Oracle,而C#因为是微软的产物,通常使用与微软相关的数据库Sql Server或Access等,当然这几种语言对不同的数据库支持都是很完美的!
二、平台:
PHP:
一般人在称呼PHP的时候,本身并没有平台和语言的区别。我们用PHP往往只做WEB应用开发,至于桌面应用程序的开发,近年好像PHP出了这种开发平台,但现实应用中几乎看不到。但是不得不说,PHP在WEB的表现层应用中,有很好的表现,不论从处理界面布局,或是性能上都有着不错的优势。
JAVA:
我们在称呼JAVA的时候,往往说的并不一定是语言本身,而是指JAVA平台。在JAVA平台中,可以使用JAVA语言去开发各种不同的应用开发,比如说:Java SE、Java EE和Java ME,分别用于开发JAVA桌面应用、WEB应用、移动应用等等。
.NET:
在.NET这个体系中,语言和平台是有明显区别的,而且一个平台上可以应用多种语言开发,这样就满足了掌握不同语言的程序员可以开发同一个应用程序。在.NET平台中,也像JAVA一样,可以开发不同的应用,比如:WinForm(桌面应用)、控制台应用、ASP.NET(WEB应用)、WPF(新的桌面应用)、WCF(网络通信基础应用)、WEB服务(面向服务编程应用)、ASP.NET MVC3.0(新的WEB应用)、XNA(桌面及手机游戏应用)等等。
平台区分:
三种技术平台都可以做我们常用的WEB应用。对于桌面应用来说,PHP并不太适用,JAVA则没有较好的桌面应用的开发工具,这方面.NET平台有较好的优势,不论是Winform还是WPF,都非常适合做桌面应用程序。至于实现一些底层的复杂业务,PHP则不如JAVA和.NET,但是在做前端表现层的时候有着较好的优势。所以很多复杂的大型综合应用,可能会有.NET或者JAVA做数据访问层及业务逻辑层,PHP则用来做表现层。据所说淘宝就是基于这种方式开发的。同时,JAVA与.NET(mono)都是可以跨平台的,.NET还能跨语言。
二。学
.Net还是学Java
因为.Net和Java是国内市场占有率最高的两门技术,对于准备学习编程语言的初学者来说,.Net和Java是初学者首先考虑的两门技术,因此很多人一遍遍的问“学.Net还是学Java”,社区中也每天都有“.Net控”在唱衰Java,也有“Java控”在唱衰.Net,一时间硝烟四起,让初学者更加迷惑。
从北京、广州、上海等地区2010年的就业统计数据(由于没有找到更权威的数据,这些数据是我对主流招聘网站和技术网站的相关数据进行的并不是太严谨的分析)来看,.Net和Java的职位数量比例为2:3,从就业网站和主要技术社区数据来看,2010年.Net和Java的学习人员数量比例为1:3。从数据上看,.Net的职位绝对数量比Java低一些,不过Java学习人员数量比.Net学习人员高出3倍,因此.Net职位的竞争激烈程度低于Java,但是有的人又会说java的工资普遍比.net高,这个就看个人能力了!
由于.Net秉承了微软技术的入门简单的特点,经过短时间的学习就可以掌握拖拉控件的快速开发方式,很多人被.Net的快速开发方式所满足,认为自己“学成了”,不再深入研究,因此人才市场上充斥着很多只会拖控件、而不懂.Net更深入一步技术的.Net开发人员,比如很多ASP.Net的书上都是讲ASP.Net服务端控件,很多
所谓“精通ASP.Net”的人连什么是Http、HTML、JavaScript、Dom等基本概念都稀里糊涂
,实际公司项目中很多功能点的实现不是简单的拖一个ASP.Net服务端控件就能搞定的,因此看似学习.Net的人非常多,但是真正满足企业要求的人则比较少;而Java则入门门槛比较高,如果想要配置一个Hello World级别的学习环境就会涉及到很多技术,开发环境也要学习者自行配置,对于初学者来说可能花费一周时间都无法配置一个最简单的环境出来,Java的开发环境也不像.Net开发环境那么可用性强,Java和.Net的区别就像Windows和Linux的区别,正因为Java学习门槛非常高,很多学习者被淘汰了下来,这样能够撑过一个个难关学习下来的开发人员都是水平比较高的人员。因此.Net初级开发人员的工资平均是比Java初级开发人员的工资平均略低的。但是由于.Net中高级人才非常缺乏,因此掌握.Net深入技术的开发人员在企业内部是非常吃香的,招聘人员经常发出这样的感叹
“招合适的Java工程师能招来一堆,招合适的.Net工程师一个月都招不来几个”。
.Net入门快,在.Net中微软为开发人员提供了一套最佳的技术架构搭配、集成的开发环境,用微软的技术架构开发出的系统就可以保证最好的效果,而不用像Java开发人员那样去学很多开源框架再去学习搭建技术架构、开发环境,因此.Net学习周期比Java短,有了语言基础后再进行集训式的就业班学习,那么.Net学习者学习3个月可以进入就业,Java学习者需要5个月可以进入就业。
微软的本地化推广工作做得非常好,因此学习.Net有大量的中文资料可以参考,因此除非研究很高深的领域,否则中文资料基本能满足开发者的需求;而Java由于走的是高端路线,因此除了初学者资料外,大部分Java资料都是英文的,学习Java需要参考很多英文资料。因此如果英文非常好的学员学习Java就会很轻松,而英文不是很好的学员学习.Net会更好。
综上,Java入门门槛比较高,需要有足够的毅力和百折不挠的精神,只要你能坚持下来你就可以将很多人在入门门槛上就将很多竞争者甩在身后。.Net入门门槛比较低,装上VisualStudio就可以马上进行开发,不需要进行太多的配置、不需要学太多基础知识,这样可以很轻松的掌握入门.Net学习,是有很成就感的事情,能让你有兴趣进一步学习,但是你不能止步于此,因此你会发现身边也有无数的人也是“轻松入门”,你就需要继续深入学习,深入学习同样需要毅力和探索的精神,你要在这个阶段上把绝大部分竞争者甩在身后,小吹一把:我教的有个学生面试回来说“在咱班里比我感觉我掌握的不是太好,但是和一起参加面试的北大某鸟的学生比我简直就是高手”,呵呵。在我讲“.Net入门简单”的时候,有学生问“.Net把问题都简化了岂不是.Net程序员都不值钱了?”,我的回答是“
微软简化的是重复性的东西和低级的东西,这样我们就能从这些低级的工作中脱身出来研究更深入的东西,因此.Net把问题简化了只是使得那些只沉迷于简单的东西的人不值钱了,会使得研究深入的人更值钱
”,这就是“.Net入门容易,深入同样难”这句话的意思。有人会问“哪些知识属于深入的知识呢?”,比如你不仅要会用ADO.Net,还要研究ADO.Net架构中的设计模式,再比如你不仅要会拖拉ASP.Net控件,更要明白ASP.Net控件内部发生了什么。,如果你想从学习一开始就尽快脱离控件型开发人员的行列,你可以
每天登陆博客园,csdn等高端.Net社区,你会发现你进步是非常快的。
可能对.Net的描述中有或多或少的偏向,但是抛去个人因素考虑,我没有暗示Java好还是.Net好,请根据自己的情况进行选择。而且.Net和Java并不像360和QQ那样必须二者选其一,并不像很多初学者认为的那样“学一门语言就靠这门语言吃一辈子”,
工作中很可能这个项目用Java,那个项目用.Net,因此你可以喜欢某个语言,但是不要抱着一门语言不放,更不用担心“Sun被Oracle收购了,Java是不是完了?”、“我学.Net,如果微软没落了我是不是就失业了”之类的问题
,不同语言只是不同的工具,换了一个新的工具可以很快的熟悉新的工具,大部分内容都是相通的,比如java中的web开发很熟悉了,转而用ASP.Net也会发现大部分东西都是和JavaWeb一样的,很快就能上手ASP.Net,难道你现在用的是诺基亚手机,你会害怕诺基亚倒台你就不会用手机了吗?“Java完了、微软死了”这类问题不是开发人员去关心的事情,而是华尔街那些金融大鳄去考虑的问题,咱们只管用技术去赚钱养家就是了。
三
。
Java、.Net、PHP 市场应用
我们把Java .Net PHP应用方面占有率做个比较,简单的把目前主流应用分成两个大类,一个是企业应用,一个是Web网站应用,下面这个表格是我归纳的,不一定准确,但是能说明一个大概。
从表中可以看到,Java和PHP都有各自擅长的领域,但是.Net却没有突出的地方,从占有率来看情况十分尴尬。
我们再来看看技术方面,首先声明,我对其中每种语言技术都不是很熟悉,只能大概分析一下...
先说说Java,在企业级方面,可以说是绝对的老大,许多企业级技术,开发思想都是由Java发展出来的。缺点是Java开发部署比较麻烦 ,不太适合超小型的项目。
再说.Net,在1.x时代,.Net可以说基本上没有多少企业级开发的特性,到了3.0,微软各种框架技术虽然弥补了这些不足,但是相对于Java世界,还是有一定距离。 在Web网站方面,.Net服务器控件的优势,变成了弱势,由于服务器空间产生垃圾代码,并且不方便美工调整,导致在前台界面要求较高的门户站点难以使用(虽然有第三方MVC框架,但是没有IDE支持,体现不出.Net的优势;当然这个只是之前,现在asp.net mvc 已经出了这些问题都解决了)
再说说PHP,他的定位非常明显,就是Web开发,所以有很多适合Web开发的特性,比如部署十分简单,几个文件随便找个虚拟主机扔上去就能运行。在国内因为Discuz , DedeCMS等著名产品的鼎立推广,PHP在中小型网站开发中有很大的优势.,最近大量的开源框架出现,给PHP企业开发注入了一些生命力,可以说潜力十足。
综合以上我们可以看到,.Net定位不太明确,微软web想吃企业级也想吃,最后没一个能吃饱吃好..
最近新闻:
Sun 在 2006 年推出了 Java 操作系统发行版许可证,允许 Linux 发行版发行 Java 软件包。在甲骨文收购 Sun 接管 Java 之后,甲骨文决定撤销发行许可证,这意味着 Linux 发行版如 Ubuntu 将无权在操作系统中捆绑 Java 包。Ubuntu 的开发商 Canonical 将从软件仓库内移除 Sun Java JDK,并从用户机器上卸载 Java 程序。安装了 sun-java-6的用户将在未来的软件更新中看到卸载提示,用户可以选择甲骨文 Java JDK 的开源替代 OpenJDK。受到影响的操作系统版本为 10.04 LTs、 Ubuntu 10.10 和 11.04。
IBM宣布将会出售预装windows server的服务器设备。
这样看来甲骨文公司开始想从java身上搞点钱用了,起诉android侵权就是一个开始……, 现在.net和java无论是在授权和开发环境等等收费问题上,已经是差不多了,唯一区别的是服务器系统收费和不收费的区别,当然在中国你懂得!而且一个linux维护人员的成本有多高,这个大家应该都清楚!
四。创业项目,你选择什么样的开发语言
1、需要尽量节省成本;2、对效率需求很大;3、有扩展性需求;4、需要考虑可移植性;
只选择主流语言:.Net、Java、PHP这类的语言。
.Net 属于微软的“个性”产品,可移植性不够,否掉。(我要补从的是
微软是不会刻意打压盗版的,现在看来这是种战略而已
)
Java语言,太“高端”,开发人员成本相对较高,而开发效率稍差一些。
PHP语言,出现时间比较长,语言相对比较成熟。开发人员比JAVA成本略低一些,开发效率比JAVA快。
PHP与平台无关可移植性比较好,代码几乎可以不用修改的在WINDOWS、LINUX上通用。
PHP的性能比JAVA略差,但是从这个项目对性能的需求来看,在可预期的时间内,还足够应付。
总结:
请注意,不论任何编程语言或技术平台,并没有好与不好之分,只有适合与否。在开发不同的项目时需要使用不同的技术。当然做为程序员初学者来说,需要从一种比较容易上手的编程语言及平台学起,培养自己的学习能力、兴趣;基础打扎实,才能在以后日新月异的技术更新中不断成长。
最后代表个人一点小观点:现在开始学it的话,我建议学php(web)或者java(手机);当然三者中php开发最为简单快速,。net其次,java效率不太高!这个也会成为企业选择语言的一个标准哦!
当然.net开发者就要看微软了,我希望是王者归来雄霸天下,跟着微软走永远有混头!
.net开发的优势在于:快速开发(服务器控件做后台非常好),后期维护成本低,当然在中国它还有一个优势就是开发成本低,你懂得!
.net web开发的模式:webform (中小项目),aspnet mvc(大中项目)
当然补充一句,说到php微软已经对它支持很好了,iis的支持也很全面, windows server 目前拥有60%的市场份额, 作为不跨平台的.net来讲还是有很大市场的(当然mono应用并不广泛),mono+linux+Jexus+.net 已经可以搭建很稳定的应用了,www.haokaimen.com这个就是架构在此之上,速度性能都不错!
总之php是3中语言中入门最简单的,同时由于架构和语法结构混乱,维护和深入比较困难!适合没有c基础的,也就是从来没接触过it的人学习,现在外面的培训机构正在如火如荼的招收学员中~~~ ,csdn上的传智培训打出了3800的超级培训费,还是非常吸引人的! 估计培训的人很多,周期短!!!当然要想全面发展就是java或者.net了平台了,而php做网站最适合,但是现在网站又值几个钱呢,提高自身水平才是最实在的,有精力有时间可以在研究哈其他的语言, 值得说的是未来是移动互联网的时代,android ,wp7,ios 你在学了吗?
产品思维的PM程序员~
工作1-3年,基础知识,多看书。多跟着别人做项目,学习经验。
工作3-5年,新知识,高级知识,自己独立做项目,总结经验。尝试不同的语言。
工作5-8年,工作职位,要从设计,管理方面要求自己,可以尝试走管理路线(项目经理或cto)。
工作10年及以上, 自己做些项目,产品,尝试为创业做准备。
上大学和不上大学区别很大,上品牌大学和普通大学区别也很大,后天的努力最大。
---无论它是在遥远的远方,还是在出发的地方、哪里有希望哪里就是我们的方向;终点、只不过是梦想起飞的地方。