java開發為什麼讓人又愛又恨

我認為Java語言的10大問題是:
1、缺少閉包(closure):我想這個不需要解釋了。函數式編程已經存在幾十年了,但最近幾年,它們獲得了越來越多的關注,最主要的原因,是它可以自然地編寫並行程序。我部分的同意Joshua Bloch強調在Java中引入閉包的問題需要再想一想(BGGA提議的方式真的很糟),至少閉包的缺失,使得在Java中做任何真正的函數式編程都是不可能的。
2、缺少一等函數:這個問題與前一個有些關聯,但我認為它更糟糕。在Java里,要達到類似效果的唯一方式,是使用著名的、醜陋悲慘的單方法匿名內部類,但這看上去的確是一個拙劣的方法。甚至在C#中,也通過代理機制,提供了一個更好的實現。
3、原生類型(Primitive types):如果在Java中一切皆對象,那是多麼完美啊,但他們偏偏不這樣設計。因而,這一點導致了一些問題,比如,不能把一個int放到集合(Collection)里,這個在Java5中通過自動裝箱特性得到了解決(下面會提到)。它也造成了傳值與傳引用上的困擾,原生類型數據是通過值傳給方法的(復制一份拷貝,然後傳給函數),而真正的對象是通過傳遞(譯註:其實是復制對象地址再傳遞,因此應該也是傳值方式,只是由於函數內部可通過這個對象地址訪問對象,因此效果上類似傳引用)。
4、自動裝箱(Autoboxing)和自動拆箱(autounboxing):這個特性是為了解決因原生類型的存在所導致的問題,在Java5引入的。它允許靜默地轉換原生類型到相應的對象,但這常常導致其它的問題。比如Integer可以為null,但int不能,因此這時JVM只能拋出一個難以調試的空指針異常(NullPointerException)。此外,它還可能導致其它奇怪的行為,就像下面的例子,我們就很難理解,變數test為什麼是false:
Intger a = new Integer(1024);
Intger b = new Integer(1024);
boolean test = a b || a == b || a > b;
5、缺少范型具類化:范型是Java5引入的一個很酷的特徵,但是為了保持與舊版本Java的兼容性,導致缺失某些重要的特性,尤其是不能在運行時反省范型的類型。例如,你有一個方法,接受List參數,如果傳進來一個List,你卻不能知道運行里該范型的確切類型。同理,你也不能創建范型數組。這意味著,盡管下面的代碼看起來很自然,但卻不編譯不了:
List[] listsOfStrings = new List[3];
6、不可避免的范型警告:你有發現過自己陷入不可能去掉的關於范型的警告么?如果你像我一樣大量使用范型,我打賭你碰到過。事實上,是這個問題的規模化症狀,讓他們認為需要引入一個特定的註解(@SuppressWarnings("unchecked"))來處理這種情況,我覺得,范型應該可能被設計的更好。
7、不能傳void給方法調用:我得承認,這種給方法傳遞void的需求,乍一看有些怪異。我喜歡DSL,當我實現自己的DSL庫(lambdaj)的一個特定特性時,我不得不需要一個方法聲明成這樣的簽名:void doSomething(Object parameter),這里為這個方法傳進來的參數parameter,是另一個方法調用的結果,它唯一的目的,是注冊調用(的對象)自身,以可以在以後執行它。讓我吃驚的是,即使println方法返回void,看上去也並沒有一個好理由,不允許我把代碼寫成這樣,:
doSomething(System.out.println("test"));
8、沒有原生的代理機制:代理是一種非常有效和應用廣泛的模式,但Java提供的代理機制,只針對介面,而不是具體類。這是為什麼象cblib這樣提供這種機制的庫,被如此多的主流框架,如Spring和Hibernate,採用的原因。此外,由於cglib通過運行時創建被代理類的子類來實現的,因此這些種方式有一個眾所周知的限制——不能代理final類,比如String。
9、差勁的Switch...case語句:Java規定,switch...case只能選擇int和enum(Java5開始)。這一點如果跟更現代的語言如Scala相比,看起來簡直太弱了。
10、受檢查異常(Checked exception):類似原生類型,受檢查異常也已經成為Java的一個罪孽之源。它迫使程序員必須做下面兩件極其糟糕討厭的事情中的一個:讓你的代碼里充斥大量的、糟糕難讀的、容易出錯的try...catch語句,而這樣做的最大意義,只是將捕獲的異常,包裝成運行時異常,然後再重新拋出;或者是讓大量的拋出聲明子句污染你的API,讓介面缺少靈活性和可擴展性。
真正的問題是,這里我提到的這幾大主要問題,唯一的解決辦法,是要做一個痛苦的決擇,定義一套新的語言規范,放下當前版本的向後兼容性。我猜他們永遠也不會這么做,雖然我相信,如果編寫一個能夠自動轉換舊Java源碼的程序,讓它們與假設的新版本兼容,並不是很困難。最後,這就是我決定開始尋找一個更好的JVM兼容語言的原因。

Ⅱ 有哪6種人不適合學習java

1、智力水平低下者不適合做java編程
人的智力有高低,當然並不是說低智力的人就笨,而是因為編程是門需要高智力的工作,尤其是編程中的思想和演算法邏輯,並不容易,不是哪個人都能很快的掌握的。一些人智力就低一些,腦子運算比較慢,他做這一行勢必困難叢叢,但這恰恰說明,他的過人之處不在這,而是在其他方面,因為每個人都有特長,而只是他的特長不在編程這,那又何必往這個方向擠呢。
2、對新事物沒有絲毫興趣的刻板之人
這類人適合做研究、搞專研,比如從事考古行業、文獻行業,但是如果要從事java編程開發的話,則是背道而馳。IT技術日新月異,需要從業者時刻關注新技術的產生和變化。更需要有不斷改進的毅力和決心,固守塵封著往往落後人一拍,無所適從。
3、吃不得苦的花花公子
不管是「程序猿」還是「攻城師」,聽起來都不像是吃喝玩樂的花花公子,IT行業不比傳統企業,也許不講吃苦耐勞的口號掛在嘴上,但確實不是清閑差事,除了要夜以繼日的編碼外,還要不斷的提升和學習。做碼工難易,而作碼工的管理者也不見得輕松。所以,吃喝玩樂之徒勢必在這行里混不好。
4、沒耐心之徒
沒耐心的人做java編程是最不靠譜的,一個優秀的軟體需要程序員精明實效的優秀代碼得以實現,一個程序員苦思數天,沒准只為提升一段代碼的運行性能;一個程序員也可能被一個微不足道的小bug折磨數天才得以解決。這對於沒有耐心的人來說,無疑是噩夢。
5、缺乏理性思考和邏輯思維的人
世界上的人有的偏向於感性思考,有的更善於理性思考。做程序員恰恰需要理性思考能力和邏輯思維能力強的分,這樣才能具備強大的分析能力和解決難題的能力,而一個非常感性缺乏理性的人斷難在這一行里有所成就,他甚至寸步難行。
6、坐不住的人
程序員最離不開的就是電腦,而對於一些坐不住的人來說,讓他長年累月面對電腦,必會厭煩。一個面對電腦十個小時樂此不疲的人和一個座10分鍾都亂咋呼的,誰更適合做程序員?
其實想要知道自己是否適合學習Java編程,到動 力 節點上幾節體驗課,就知道自己是否適合了。對了。明年在深圳也要開分校了。留意下吧

Ⅲ 為什麼討厭 Java 的人比較多且易見

毋庸置疑java作為一門計算機編程語言,J2EE結構堪稱完美,第一版軟體可以做到如此滿意度。毫無疑問,這個問題我們該站在程序員的角度考慮其合理性。


互聯網模式的持續不斷修改的今天,互聯網軟體工程管理上的不足,持續的修修補補導致架構的破壞都一一顯露出來。


歸根結底就是網上鋪天蓋地的宣傳和公司招聘太多了,用的人多的同時它的弊端諸如其結構和語言的質量低也會被無限放大,同時無味批判的也多,所以導致討厭java的人較多且易見。

Ⅳ Java 是怎麼變得令人討厭的

幾乎和它有關系的框架,即使號稱輕量級最後都會變的笨重比如現在spring,當然和其他java框架比起來真的是輕了不少。除了臃腫,就是一些莫名阿妙的錯誤,C/C++,python這些錯誤大部分可以通過編譯器得知錯誤原因,但是java,比如調用一個method A,A有好幾種(Java的繼承和重載導致了它能有好幾種),一個是A(int a),另一個是A(int a,string b)。在代碼的時候一旦選錯就會冒出空指針錯誤,之後你會網路,但網路的結果肯定沒有解決這個的。。。
然後是它的邏輯,說實話開始學java基礎的時候感覺邏輯還是可以的,但是到了高級別用框架的時候,很多人都說框架簡化的開發,其實本質是少寫那幾個JDBC重復語言,但是你又得多創建N個XML文件,相信我說框架簡化JAVA開發的真的是夠了。如果簡化了開發?那麼為什麼JAVA後期工程師的稱號是架構師而不是像C++那樣直接稱呼C++工程師呢?這點我想不言而喻了,框架並沒有帶來本質的簡化,它用多出來的XML邏輯代替了之前手動敲的重復的代碼!實質是代碼量減少了,邏輯變復雜了。(這點改變感覺可有可無)。
還有就是人方面,目前大型企業普遍採用JAVA這是事實我無法辯駁,但很多高校為了就業統統一律JAVA為主,先不要說高校教育質量怎麼樣?這么依賴相當於抹殺了中國未來的某些可能是C/C++,PHP或者系統內核類的大牛,出來全他媽在哪裡搞網頁,這尼瑪不是害人嗎?而且,學JAVA的那些有幾個真心想學,都是因為火就來了。。。而且按照JAVA語言的特性,不像C++開發項目越多約有經驗,因為後期都是一樣了,這幾乎是給那些趁年輕來撈一票然後轉會老本的其他專業或者本專業就打算干幾年就跑的人提供了不可多得的平台。
我在讀大學的時候就在思考,他們只教我JAVA,我30歲以後該怎麼辦?我深知自己資質平庸,所以若學java,30歲以後我肯定失業。這是我討厭它的根本原因!java讓我這樣的人迷惘,它不像其他語言能有經驗的積累!
不過最近ORACLE好像拋棄了JAVA,我想著這貨的命運終於要到頭了,可是我已經畢業了,我除了目前先做下JAVA我又能幹嘛呢?這是另一個討厭的原因,當我需要用你來養活自己的時候,你撐不住了。。。。

Ⅳ 討厭java.lang.NoSuchMethodException: Action[/loginAction] does not contain specified method (check

form1.action="loginAction.do?method=doLogin";
改成form1.action="/loginAction.do?method=doLogin";
試試

Ⅵ 厭惡java..

建議你去看一下王垠!
清華夢的粉碎,完全用linux 工作等等寫的和你現在的想法差不多,
你可以網路了解一下!
我是JAVA剛入門,互相了解一下

Ⅶ java開發的缺點有哪些

我認為Java語言的10大問題是:
1、缺少閉包(closure):我想這個不需要解釋了。函數式編程已經存在幾十年了,但最近幾年,它們獲得了越來越多的關注,最主要的原因,是它可以自然地編寫並行程序。我部分的同意Joshua Bloch強調在Java中引入閉包的問題需要再想一想(BGGA提議的方式真的很糟),至少閉包的缺失,使得在Java中做任何真正的函數式編程都是不可能的。
2、缺少一等函數:這個問題與前一個有些關聯,但我認為它更糟糕。在Java里,要達到類似效果的唯一方式,是使用著名的、醜陋悲慘的單方法匿名內部類,但這看上去的確是一個拙劣的方法。甚至在C#中,也通過代理機制,提供了一個更好的實現。
3、原生類型(Primitive types):如果在Java中一切皆對象,那是多麼完美啊,但他們偏偏不這樣設計。因而,這一點導致了一些問題,比如,不能把一個int放到集合(Collection)里,這個在Java5中通過自動裝箱特性得到了解決(下面會提到)。它也造成了傳值與傳引用上的困擾,原生類型數據是通過值傳給方法的(復制一份拷貝,然後傳給函數),而真正的對象是通過傳遞(譯註:其實是復制對象地址再傳遞,因此應該也是傳值方式,只是由於函數內部可通過這個對象地址訪問對象,因此效果上類似傳引用)。
4、自動裝箱(Autoboxing)和自動拆箱(autounboxing):這個特性是為了解決因原生類型的存在所導致的問題,在Java5引入的。它允許靜默地轉換原生類型到相應的對象,但這常常導致其它的問題。比如Integer可以為null,但int不能,因此這時JVM只能拋出一個難以調試的空指針異常(NullPointerException)。此外,它還可能導致其它奇怪的行為,就像下面的例子,我們就很難理解,變數test為什麼是false:
Intger a = new Integer(1024);
Intger b = new Integer(1024);
boolean test = a < b || a == b || a > b;
5、缺少范型具類化:范型是Java5引入的一個很酷的特徵,但是為了保持與舊版本Java的兼容性,導致缺失某些重要的特性,尤其是不能在運行時反省范型的類型。例如,你有一個方法,接受List參數,如果傳進來一個List,你卻不能知道運行里該范型的確切類型。同理,你也不能創建范型數組。這意味著,盡管下面的代碼看起來很自然,但卻不編譯不了:
List[] listsOfStrings = new List[3];
6、不可避免的范型警告:你有發現過自己陷入不可能去掉的關於范型的警告么?如果你像我一樣大量使用范型,我打賭你碰到過。事實上,是這個問題的規模化症狀,讓他們認為需要引入一個特定的註解(@SuppressWarnings("unchecked"))來處理這種情況,我覺得,范型應該可能被設計的更好。
7、不能傳void給方法調用:我得承認,這種給方法傳遞void的需求,乍一看有些怪異。我喜歡DSL,當我實現自己的DSL庫(lambdaj)的一個特定特性時,我不得不需要一個方法聲明成這樣的簽名:void doSomething(Object parameter),這里為這個方法傳進來的參數parameter,是另一個方法調用的結果,它唯一的目的,是注冊調用(的對象)自身,以可以在以後執行它。讓我吃驚的是,即使println方法返回void,看上去也並沒有一個好理由,不允許我把代碼寫成這樣,:
doSomething(System.out.println("test"));
8、沒有原生的代理機制:代理是一種非常有效和應用廣泛的模式,但Java提供的代理機制,只針對介面,而不是具體類。這是為什麼象cblib這樣提供這種機制的庫,被如此多的主流框架,如Spring和Hibernate,採用的原因。此外,由於cglib通過運行時創建被代理類的子類來實現的,因此這些種方式有一個眾所周知的限制——不能代理final類,比如String。
9、差勁的Switch...case語句:Java規定,switch...case只能選擇int和enum(Java5開始)。這一點如果跟更現代的語言如Scala相比,看起來簡直太弱了。
10、受檢查異常(Checked exception):類似原生類型,受檢查異常也已經成為Java的一個罪孽之源。它迫使程序員必須做下面兩件極其糟糕討厭的事情中的一個:讓你的代碼里充斥大量的、糟糕難讀的、容易出錯的try...catch語句,而這樣做的最大意義,只是將捕獲的異常,包裝成運行時異常,然後再重新拋出;或者是讓大量的拋出聲明子句污染你的API,讓介面缺少靈活性和可擴展性。
真正的問題是,這里我提到的這幾大主要問題,唯一的解決辦法,是要做一個痛苦的決擇,定義一套新的語言規范,放下當前版本的向後兼容性。我猜他們永遠也不會這么做,雖然我相信,如果編寫一個能夠自動轉換舊Java源碼的程序,讓它們與假設的新版本兼容,並不是很困難。最後,這就是我決定開始尋找一個更好的JVM兼容語言的原因。

Ⅷ 如果討厭JAVA能學好JSP嗎

不一定,你走走出軌的棋會死啊?你要理解JAVA和JSP分別是什麼。用JAVA能做出什麼效果?能做像QQ界面的程序。JSP是做網頁的。語言上來說是有聯系。但是你要進行JSP的話不僅僅要學JAVA語言,還要學習 HTML 。你在Java的學習中學會類,介面,繼承,封裝就夠你JSP使用了。但是不要討厭這門語言。因為你要做JAVA程序員,JAVA的底層東西你必須知道的。