能夠使用java開發出類似qq的聊天小程序達到了java學習的什麼水平?

Java學習ing


作為一個已經寫了十幾年代碼的老司機,在寫代碼之餘還會寫點技術感受,或者分享一些編程心的,幾年下來也積攢了幾萬粉絲,也有一些對於技術不是很懂的小夥伴,在交流過程中經常說出這樣的話,開發一個類似qq的軟件需要多長時間,需要花費多少資金。軟件這種東西可以說的很大,也可以說的很小。就拿簡單的聊天功能其實就是簡單的網絡通訊功能直接掌握socket編程就能完成數據接收和發送,現在經常在局域網內傳輸文件的飛秋軟件就是這個基本功能,不過現在這個軟件功能做的越來越多了,已經不是僅僅是簡單的數據傳輸那麼簡單的功能了。

真要分析qq的功能,這種就不是單純的數據傳遞這麼簡單的事情了,首先要有強大的服務器集群支撐,現在只是qq上面緩存的圖片以及視頻在服務器裡面的集群處理就是一種技術難度不低的技術,而且這麼多服務器之間需要協調配合好,一旦一個出現安全問題別的服務器是不是能夠及時啟動安全預警功能,當然這只是對於服務器局部的一些功能的舉例,還沒有說到qq客戶端一些技術,這個主要分為windows版本,蘋果系統版本,安卓版本等等,每項幾乎都需要對運行環境非常熟悉,而且開發對應的編程語言。

如果只是簡單的數據傳送,初學者在清楚socket機制的情況下,基本上就能搞定,至於要能對qq功能落實到底,基本上都不是個人考慮的事情,而且不同的平臺上使用的編程語言的種類還不一樣,實現的方式還是多少有些差異,針對樓主的題目利用java開發小程序。

其實這個另外的深層含義,如何知道自己是不是能夠成為一個標準的java程序員?

1.首先要把java基礎知識搞定,這點只要是從事java開發都繞不開的問題

2.java高級編程,掌握如何判斷內存以及性能問題,多線程,網絡編程,反射機制等基本功能

3.如何在服務端開發需要掌握至少一種框架,並且嘗試在這個框架上實踐項目

編寫任何代碼都需要有一個紮實的基本功, 初學者在找不到實踐項目的情況下能做的就是打好基礎。

希望能能幫到你。


大學生編程指南


聊天類應用(RTC)是學習Java過程中經常做的實驗,其實聊天功能有很多事情可以做,隨著學習的不斷深入而逐步豐富聊天程序的功能。

在學習的早期階段可以使用多線程結合Socket創建一個基本的聊天應用,這個應用的重點在於對多線程的理解以及對Socket創建連接過程的理解。在Java學習的初級階段,多線程是一個重點內容,也是一個難點。Java多線程的內容還是比較多的,尤其在Java1.5版本以及Java1.8版本之後,增加了不少關於多線程方面的內容(我在頭條上寫了關於Java併發編程的系列文章,一共有20多篇,感興趣的朋友可以關注我的頭條號,並查看相應的文章)。

Java的Socket通訊是學習Java網絡開發首先接觸到的內容,這個過程要了解一系列用於網絡通訊的協議在使用上的區別(UDP、TCP),包括Socket、ServerSocket、DatagramSocket、MulticastSocket、URL、Proxy等類的使用。可以說這部分內容屬於Java網絡編程的基礎部分,也是整個Java學習過程中的初級部分。

接下來要學習的內容涉及到流媒體的傳輸,比如常見的語音、視頻的傳輸(具有實時性要求),這部分內容就有一定難度了,往往需要架設專門的服務器(集群)來解決通信問題(誤碼率等)。我在2006年的時候參與了一個Voip項目組,當時我的任務就是使用Java程序來完成終端功能的實現,我也參與了網關的編寫,這是一個比較龐大的工程,參與者也非常多。

總的來說,使用Java做聊天應用是非常鍛鍊學習者編程能力的,在開發的過程中還能比較系統的瞭解網絡通信過程以及數據交換過程,這對以後的編程工作會有較大的幫助。

我目前的主要研究方向是大數據和人工智能,同時也在帶相關方向的研究生,我會陸續在頭條上寫一些關於軟件開發方面的文章,感興趣的朋友可以關注我的頭條號,相信一定會有所收穫。

如果有軟件類問題,也可以諮詢我,謝謝!


IT人劉俊明


java作為一種開發語言,囊括的東西很多。我們平時使用也只是用到了其中很少的一部分,而且我們的關注領域不一樣。大部分程序員都是做業務系統,平時關注的無外乎Spring、Mybatis等。而做其他領域的程序員,比如你說的聊天小程序,他關注的知識點可能是Socket、多線程。

而做視頻的程序員,他的關注點可能又不一樣。所以不能說做了個聊天小程序,java水平就如何如何,只是我們所在的領域不一樣。因為做業務系統的人多,所以給大家感覺,做這個領域的人技術水平一般,而做聊天小程序、視頻的人相對較少,所以覺得水平高。如果做不同領域的程序員互換一下,他們的感覺應該都是一樣的。所以不能片面的講哪個領域的程序員水平如何如何。


JAVA同學會


簡單的聊天工具實現就只是應用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工程師的重點在學習能力,對設計模式的應用能力,這些能力對於團隊協作開發至關重要!

作為程序員最忌諱的是在技術實現後,沉浸在驕傲感之中,這會讓自己迷失自我,可能會因此排斥他人的代碼設計,更或者嚴重一點固步自封!對於很多人,去承認自己的技術不足是很難的,若想做的更好,達到高級工程師,系統架構師,以及更高的崗位首席技術執行官都必須學會接納他人的想法,不斷改進和吸收,才會讓自己的能力和價值得到體現!

希望對讀者有所幫助,也希望越來越多的人能夠理解企業對於程序員的要求!共同努力!


分享到:


相關文章: