-
1 # 牛初九
-
2 # 人生路誰主沉浮
簡單的聊天工具實現就只是應用JAVA對TCP協議的支援,而JAVA自身有很多模組,不同的領域和企業業務需求用到的模組也不相同!
JAVA Socket算是JAVA當中比較重要的一部分,但並不是需要你刻意去表現的一部分,對於高階工程師這只是基礎,當然還得看你的聊天工具是否支援在網際網路條件下的應用!大部分高階工程師會在熟練這些基礎之後,會花精力和時間在框架的開發上,因為框架的開發注重的是高效,擴充套件性,和伸縮性,並且對個人的語言設計能力要求還是相當高的,學習JAVA要做到系統化,規範化,進而再去延伸資料庫,中介軟體,負載均衡,日誌分析等方面的應用!
對於聊天系統,我認為,你最多能會用到的JAVA技術: JAVA網路程式設計,JAVA的ORM框架,JAVA的多執行緒,JAVA的NIO框架和一些訊息快取中介軟體!如果你的應用中用到了這些,那麼你就達到了高階工程師的水平,但是,如果這些簡簡單單隻用到了其中一兩處,對整體的應用框架沒有多大改變,本質的提升以及並沒有滿足可擴充套件性的要求,就不算真正達到高階工程師的水平,JAVA整個行業更注重的是對各種應用框架的整合,而這需要對設計模式有更深入的瞭解!
JAVA中的重點在於設計模式和自我學習能力,由於網際網路技術的發展,各種應用框架層出不窮,就拿Springframework來說吧,就這樣一個框架,從Bean到ORM到TX到JMS再到MVC,再到SpringBoot ,Spring Cloud等等,這一個框架就包含多個模組支援,為什麼?因為整個行業的應用容量是相當龐大的,技術層出不窮,所以對於JAVA工程師的重點在學習能力,對設計模式的應用能力,這些能力對於團隊協作開發至關重要!
作為程式設計師最忌諱的是在技術實現後,沉浸在驕傲感之中,這會讓自己迷失自我,可能會因此排斥他人的程式碼設計,更或者嚴重一點固步自封!對於很多人,去承認自己的技術不足是很難的,若想做的更好,達到高階工程師,系統架構師,以及更高的崗位首席技術執行官都必須學會接納他人的想法,不斷改進和吸收,才會讓自己的能力和價值得到體現!
-
3 # IT人劉俊明
聊天類應用(RTC)是學習Java過程中經常做的實驗,其實聊天功能有很多事情可以做,隨著學習的不斷深入而逐步豐富聊天程式的功能。
Java的Socket通訊是學習Java網路開發首先接觸到的內容,這個過程要了解一系列用於網路通訊的協議在使用上的區別(UDP、TCP),包括Socket、ServerSocket、DatagramSocket、MulticastSocket、URL、Proxy等類的使用。可以說這部分內容屬於Java網路程式設計的基礎部分,也是整個Java學習過程中的初級部分。
接下來要學習的內容涉及到流媒體的傳輸,比如常見的語音、影片的傳輸(具有實時性要求),這部分內容就有一定難度了,往往需要架設專門的伺服器(叢集)來解決通訊問題(誤位元速率等)。我在2006年的時候參與了一個Voip專案組,當時我的任務就是使用Java程式來完成終端功能的實現,我也參與了閘道器的編寫,這是一個比較龐大的工程,參與者也非常多。
總的來說,使用Java做聊天應用是非常鍛鍊學習者程式設計能力的,在開發的過程中還能比較系統的瞭解網路通訊過程以及資料交換過程,這對以後的程式設計工作會有較大的幫助。
-
4 # 大學生程式設計指南
作為一個已經寫了十幾年程式碼的老司機,在寫程式碼之餘還會寫點技術感受,或者分享一些程式設計心的,幾年下來也積攢了幾萬粉絲,也有一些對於技術不是很懂的小夥伴,在交流過程中經常說出這樣的話,開發一個類似qq的軟體需要多長時間,需要花費多少資金。軟體這種東西可以說的很大,也可以說的很小。就拿簡單的聊天功能其實就是簡單的網路通訊功能直接掌握socket程式設計就能完成資料接收和傳送,現在經常在區域網內傳輸檔案的飛秋軟體就是這個基本功能,不過現在這個軟體功能做的越來越多了,已經不是僅僅是簡單的資料傳輸那麼簡單的功能了。
真要分析qq的功能,這種就不是單純的資料傳遞這麼簡單的事情了,首先要有強大的伺服器叢集支撐,現在只是qq上面快取的圖片以及影片在伺服器裡面的叢集處理就是一種技術難度不低的技術,而且這麼多伺服器之間需要協調配合好,一旦一個出現安全問題別的伺服器是不是能夠及時啟動安全預警功能,當然這只是對於伺服器區域性的一些功能的舉例,還沒有說到qq客戶端一些技術,這個主要分為windows版本,蘋果系統版本,安卓版本等等,每項幾乎都需要對執行環境非常熟悉,而且開發對應的程式語言。
如果只是簡單的資料傳送,初學者在清楚socket機制的情況下,基本上就能搞定,至於要能對qq功能落實到底,基本上都不是個人考慮的事情,而且不同的平臺上使用的程式語言的種類還不一樣,實現的方式還是多少有些差異,針對樓主的題目利用java開發小程式。
其實這個另外的深層含義,如何知道自己是不是能夠成為一個標準的java程式設計師?
1.首先要把java基礎知識搞定,這點只要是從事java開發都繞不開的問題
2.java高階程式設計,掌握如何判斷記憶體以及效能問題,多執行緒,網路程式設計,反射機制等基本功能
3.如何在服務端開發需要掌握至少一種框架,並且嘗試在這個框架上實踐專案
編寫任何程式碼都需要有一個紮實的基本功, 初學者在找不到實踐專案的情況下能做的就是打好基礎。
-
5 # 木子科技見聞
謝邀,作為一線java工程師來回答。簡單實現qq的基本聊天通訊,說明你已經對語言基礎有了一定熟練度,再接再厲。市面上網際網路公司招聘,除了語言基礎,還需要你對常用的流行框架有一定使用經驗,比如spring、spring mvc、mybatis、hibernate、spring boot、mysql、Oracle、分散式框架spring cloud、double、zk、容器技術等等。這些需要一點點積累,不管走多遠,都要保持學習心態。
回覆列表
java作為一種開發語言,囊括的東西很多。我們平時使用也只是用到了其中很少的一部分,而且我們的關注領域不一樣。大部分程式設計師都是做業務系統,平時關注的無外乎Spring、Mybatis等。而做其他領域的程式設計師,比如你說的聊天小程式,他關注的知識點可能是Socket、多執行緒。
而做影片的程式設計師,他的關注點可能又不一樣。所以不能說做了個聊天小程式,java水平就如何如何,只是我們所在的領域不一樣。因為做業務系統的人多,所以給大家感覺,做這個領域的人技術水平一般,而做聊天小程式、影片的人相對較少,所以覺得水平高。如果做不同領域的程式設計師互換一下,他們的感覺應該都是一樣的。所以不能片面的講哪個領域的程式設計師水平如何如何。