⑴ GitHub上面有哪些經典的java框架源碼
Bazel:來自Google的構建工具,可以快速、可靠地構建代碼。官網
Gradle:使用Groovy(非XML)進行增量構建,可以很好地與Maven依賴管理配合工作。官網
Buck:Facebook構建工具。官網
ASM:通用底層位元組碼操作和分析開發庫。官網
Byte Buddy:使用流式API進一步簡化位元組碼生成。官網
Byteman:在運行時通過DSL(規則)操作位元組碼進行測試和故障排除。官網
Javassist:一個簡化位元組碼編輯嘗試。官網
Apache Aurora:Apache Aurora是一個Mesos框架,用於長時間運行服務和定時任務(cron job)。官網
Singularity:Singularity是一個Mesos框架,方便部署和操作。它支持Web Service、後台運行、調度作業和一次性任務。官網
Checkstyle:代碼編寫規范和標准靜態分析工具。官網
Error Prone:將常見編程錯誤作為運行時錯誤報告。官網
FindBugs:通過位元組碼靜態分析查找隱藏bug。官網
jQAssistant:使用基於Neo4J查詢語言進行代碼靜態分析。官網
PMD:對源代碼分析查找不良的編程習慣。官網
SonarQube:通過插件集成其它分析組件,對過去一段時間內的數據進行統計。官網
ANTLR:復雜的全功能自頂向下解析框架。官網
JavaCC:JavaCC是更加專門的輕量級工具,易於上手且支持語法超前預測。官網
config:針對JVM語言的配置庫。官網
owner:減少冗餘配置屬性。官網
Choco:可直接使用的約束滿足問題求解程序,使用了約束規劃技術。官網
JaCoP:為FlatZinc語言提供了一個介面,可以執行MiniZinc模型。官網
OptaPlanner:企業規劃與資源調度優化求解程序。官網
Sat4J:邏輯代數與優化問題最先進的求解程序。官網
Bamboo:Atlassian解決方案,可以很好地集成Atlassian的其他產品。可以選擇開源許可,也可以購買商業版。官網
CircleCI:提供託管服務,可以免費試用。官網
Codeship:提供託管服務,提供有限的免費模式。官網
fabric8:容器集成平台。官網
Go:ThoughtWork開源解決方案。官網
Jenkins:支持基於伺服器的部署服務。官網
TeamCity:JetBrain的持續集成解決方案,有免費版。官網
Travis:通常用作開源項目的託管服務。官網
Buildkite: 持續集成工具,用簡單的腳本就能設置pipeline,而且能快速構建,可以免費試用。官網
uniVocity-parsers:速度最快功能最全的CSV開發庫之一,同時支持TSV與固定寬度記錄的讀寫。官網
Apache Phoenix:HBase針對低延時應用程序的高性能關系資料庫層。官網
Crate:實現了數據同步、分片、縮放、復制的分布式數據存儲。除此之外還可以使用基於SQL的語法跨集群查詢。官網
Flyway:簡單的資料庫遷移工具。官網
H2:小型SQL資料庫,以可以作為內存資料庫使用著稱。官網
HikariCP:高性能JDBC連接工具。官網
JDBI:便捷的JDBC抽象。官網
Protobuf:Google數據交換格式。官網
SBE:簡單二進制編碼,是最快速的消息格式之一。官網
Wire:整潔輕量級協議緩存。官網
Apache DeltaSpike:CDI擴展框架。官網
Dagger2:編譯時注入框架,不需要使用反射。官網
Guice:可以匹敵Dagger的輕量級注入框架。官網
HK2:輕量級動態依賴注入框架。官網
ADT4J:針對代數數據類型的JSR-269代碼生成器。官網
AspectJ:面向切面編程(AOP)的無縫擴展。官網
Auto:源代碼生成器集合。官網
DCEVM:通過修改JVM在運行時支持對已載入的類進行無限次重定義。官網
HotswapAgent:支持無限次重定義運行時類與資源。官網
Immutables:類似Scala的條件類。官網
JHipster:基於Spring Boot與AngularJS應用程序的Yeoman源代碼生成器。官網
JRebel:無需重新部署,可以即時重新載入代碼與配置的商業軟體。官網
Lombok:減少冗餘的代碼生成器。官網
Spring Loaded:類重載代理。官網
vert.x:多語言事件驅動應用框架。官網
Akka:用來編寫分布式容錯並發事件驅動應用程序的工具和運行時。官網
Apache Storm:實時計算系統。官網
Apache ZooKeeper:針對大型分布式系統的協調服務,支持分布式配置、同步和名稱注冊。官網
Hazelcast:高可擴展內存數據網格。官網
Hystrix:提供延遲和容錯。官網
JGroups:提供可靠的消息傳遞和集群創建的工具。官網
Orbit:支持虛擬角色(Actor),在傳統角色的基礎上增加了另外一層抽象。官網
Quasar:為JVM提供輕量級線程和角色。官網
Apache Cassandra:列式資料庫,可用性高且沒有單點故障。官網
Apache HBase:針對大數據的Hadoop資料庫。官網
Druid:實時和歷史OLAP數據存儲,在聚集查詢和近似查詢方面表現不俗。官網
Infinispan:針對緩存的高並發鍵值對數據存儲。官網
Bintray:發布二進制文件版本控制工具。可以於Maven或Gradle一起配合使用。提供開源免費版本和幾種商業收費版本。官網
Central Repository:最大的二進制組件倉庫,面向開源社區提供免費服務。Apache Maven默認使用Central官網Repository,也可以在所有其他構建工具中使用。
IzPack:為跨平台部署建立創作工具(Authoring Tool)。官網
JitPack:打包GitHub倉庫的便捷工具。可根據需要構建Maven、Gradle項目,發布可立即使用的組件。官網
Launch4j:將JAR包裝為輕量級本機Windows可執行程序。官網
Nexus:支持代理和緩存功能的二進制管理工具。官網
packr:將JAR、資源和JVM打包成Windows、Linux和Mac OS X本地發布文件。官網
Apache POI:支持OOXML規范(XLSX、DOCX、PPTX)以及OLE2規范(XLS、DOC、PPT)。官網
documents4j:使用第三方轉換器進行文檔格式轉換,轉成類似MS Word這樣的格式。官網
jOpenDocument:處理OpenDocument格式(由Sun公司提出基於XML的文檔格式)。官網
Cyclops:支持一元(Monad)操作和流操作工具類、comprehension(List語法)、模式匹配、trampoline等特性。官網
Fugue:Guava的函數式編程擴展。官網
Functional Java:實現了多種基礎和高級編程抽象,用來輔助面向組合開發(composition-oriented development)。官網
Javaslang:一個函數式組件庫,提供持久化數據類型和函數式控制結構。官網
jOOλ:旨在填補Java 8 lambda差距的擴展,提供了眾多缺失的類型和一組豐富的順序流API。官網
jMonkeyEngine:現代3D游戲開發引擎。官網
libGDX:全面的跨平台高級框架。官網
LWJGL:對OpenGL/CL/AL等技術進行抽象的健壯框架。官網
JavaFX:Swing的後繼者。官網
Scene Builder:開發JavaFX應用的可視化布局工具。官網
Agrona:高性能應用中常見的數據結構和工具方法。官網
Disruptor:線程間消息傳遞開發庫。官網
fastutil:快速緊湊的特定類型集合(Collection)。官網
GS Collections:受Smalltalk啟發的集合框架。官網
HPPC:基礎類型集合。官網
Javolution:實時和嵌入式系統的開發庫。官網
JCTools:JDK中缺失的並發工具。官網
Koloboke:Hash set和hash map。官網
Trove:基礎類型集合。官網
High-scale-bli:Cliff Click 個人開發的高性能並發庫官網
Eclipse:老牌開源項目,支持多種插件和編程語言。官網
IntelliJ IDEA:支持眾多JVM語言,是安卓開發者好的選擇。商業版主要針對企業客戶。官網
NetBeans:為多種技術提供集成化支持,包括Java SE、Java EE、資料庫訪問、HTML5
Imgscalr:純Java 2D實現,簡單、高效、支持硬體加速的圖像縮放開發庫。官網
Picasso:安卓圖片下載和圖片緩存開發庫。官網
Thumbnailator:Thumbnailator是一個高質量Java縮略圖開發庫。官網
ZXing:支持多種格式的一維、二維條形碼圖片處理開發庫。官網
im4java: 基於ImageMagick或GraphicsMagick命令行的圖片處理開發庫,基本上ImageMagick能夠支持的圖片格式和處理方式都能夠處理。官網
Apache Batik:在Java應用中程序以SVG格式顯示、生成及處理圖像的工具集,包括SVG解析器、SVG生成器、SVG DOM等模塊,可以集成使用也可以單獨使用,還可以擴展自定義的SVG標簽。官網
Genson:強大且易於使用的Java到JSON轉換開發庫。官網
Gson:谷歌官方推出的JSON處理庫,支持在對象與JSON之間雙向序列化,性能良好且可以實時調用。官網
Jackson:與GSON類似,在頻繁使用時性能更佳。官網
LoganSquare:基於Jackson流式API,提供對JSON解析和序列化。比GSON與Jackson組合方式效果更好。官網
Fastjson:一個Java語言編寫的高性能功能完善的JSON庫。官網
Kyro:快速、高效、自動化的Java對象序列化和克隆庫。官網
JDK 9:JDK 9的早期訪問版本。官網
OpenJDK:JDK開源實現。官網
Scala:融合了面向對象和函數式編程思想的靜態類型編程語言。官網
Groovy:類型可選(Optionally typed)的動態語言,支持靜態類型和靜態編譯。目前是一個Apache孵化器項目。官網
Clojure:可看做現代版Lisp的動態類型語言。官網
Ceylon:RedHat開發的面向對象靜態類型編程語言。官網
Kotlin:JetBrain針對JVM、安卓和瀏覽器提供的靜態類型編程語言。官網
Xtend:一種靜態編程語言,能夠將其代碼轉換為簡潔高效的Java代碼,並基於JVM運行。官網
Apache Log4j 2:使用強大的插件和配置架構進行完全重寫。官網
kibana:分析及可視化日誌文件。官網
Logback:強健的日期開發庫,通過Groovy提供很多有趣的選項。官網
logstash:日誌文件管理工具。官網
Metrics:通過JMX或HTTP發布參數,並且支持存儲到資料庫。官網
SLF4J:日誌抽象層,需要與具體的實現配合使用。官網
Apache Flink:快速、可靠的大規模數據處理引擎。官網
Apache Hadoop:在商用硬體集群上用來進行大規模數據存儲的開源軟體框架。官網
Apache Mahout:專注協同過濾、聚類和分類的可擴展演算法。官網
Apache Spark:開源數據分析集群計算框架。官網
DeepDive:從非結構化數據建立結構化信息並集成到已有資料庫的工具。官網
Deeplearning4j:分布式多線程深度學習開發庫。官網
H2O:用作大數據統計的分析引擎。官網
Weka:用作數據挖掘的演算法集合,包括從預處理到可視化的各個層次。官網
QuickML:高效機器學習庫。官網、GitHub
Aeron:高效可擴展的單播、多播消息傳遞工具。官網
Apache ActiveMQ:實現JMS的開源消息代理(broker),可將同步通訊轉為非同步通訊。官網
Apache Camel:通過企業級整合模式(Enterprise Integration Pattern EIP)將不同的消息傳輸API整合在一起。官網
Apache Kafka:高吞吐量分布式消息系統。官網
Hermes:快速、可靠的消息代理(Broker),基於Kafka構建。官網
JBoss HornetQ:清晰、准確、模塊化,可以方便嵌入的消息工具。官網
JeroMQ:ZeroMQ的純Java實現。官網
Smack:跨平台XMPP客戶端函數庫。官網
Openfire:是開源的、基於XMPP、採用Java編程語言開發的實時協作伺服器。 Openfire安裝和使用都非常簡單,並可利用Web界面進行管理。官網GitHub
Spark:是一個開源,跨平台IM客戶端。它的特性支持集組聊天,電話集成和強大安全性能。如果企業內部部署IM使用Openfire+Spark是最佳的組合。官網GitHub
Tigase: 是一個輕量級的可伸縮的 Jabber/XMPP 伺服器。無需其他第三方庫支持,可以處理非常高的復雜和大量的用戶數,可以根據需要進行水平擴展。官網
Design Patterns:實現並解釋了最常見的設計模式。官網
Jimfs:內存文件系統。官網
Lanterna:類似curses的簡單console文本GUI函數庫。官網
LightAdmin:可插入式CRUD UI函數庫,可用來快速應用開發。官網
OpenRefine:用來處理混亂數據的工具,包括清理、轉換、使用Web Service進行擴展並將其關聯到資料庫。官網
RoboVM:Java編寫原生iOS應用。官網
Quartz:強大的任務調度庫.官網
AppDynamics:性能監測商業工具。官網
JavaMelody:性能監測和分析工具。官網
Kamon:Kamon用來監測在JVM上運行的應用程序。官網
New Relic:性能監測商業工具。官網
SPM:支持對JVM應用程序進行分布式事務追蹤的性能監測商業工具。官網
Takipi:產品運行時錯誤監測及調試商業工具。官網
JNA:不使用JNI就可以使用原生開發庫。此外,還為常見系統函數提供了介面。官網
Apache OpenNLP:處理類似分詞等常見任務的工具。官網
CoreNLP:斯坦佛CoreNLP提供了一組基礎工具,可以處理類似標簽、實體名識別和情感分析這樣的任務。官網
LingPipe:一組可以處理各種任務的工具集,支持POS標簽、情感分析等。官網
Mallet:統計學自然語言處理、文檔分類、聚類、主題建模等。官網
Async Http Client:非同步HTTP和WebSocket客戶端函數庫。官網
Grizzly:NIO框架,在Glassfish中作為網路層使用。官網
Netty:構建高性能網路應用程序開發框架。官網
OkHttp:一個Android和Java應用的HTTP+SPDY客戶端。官網
Undertow:基於NIO實現了阻塞和非阻塞API的Web伺服器,在WildFly中作為網路層使用。官網
Ebean:支持快速數據訪問和編碼的ORM框架。官網
EclipseLink:支持許多持久化標准,JPA、JAXB、JCA和SDO。官網
Hibernate:廣泛使用、強健的持久化框架。Hibernate的技術社區非常活躍。官網
MyBatis:帶有存儲過程或者SQL語句的耦合對象(Couples object)。官網
OrmLite:輕量級開發包,免除了其它ORM產品中的復雜性和開銷。官網
Nutz:另一個SSH。官網,Github
JFinal:JAVA WEB + ORM框架。官網,Github
Apache FOP:從XSL-FO創建PDF。官網
Apache PDFBox:用來創建和操作PDF的工具集。官網
DynamicReports:JasperReports的精簡版。官網
flyingsaucer:XML/XHTML和CSS 2.1渲染器。官網
iText:一個易於使用的PDF函數庫,用來編程創建PDF文件。注意,用於商業用途時需要許可證。官網
JasperReports:一個復雜的報表引擎。官網
jHiccup:提供平台中JVM暫停的日誌和記錄。官網
JMH:JVM基準測試工具。官網
JProfiler:商業分析器。官網
LatencyUtils:測量和報告延遲的工具。官網
VisualVM:對運行中的應用程序信息提供了可視化界面。官網
YourKit Java Profiler:商業分析器。官網
Reactive Streams:非同步流處理標准,支持非阻塞式反向壓力(backpressure)。官網
Reactor:構建響應式快速數據(fast-data)應用程序的開發庫。官網
RxJava:通過JVM可觀察序列(observable sequence)構建非同步和基於事件的程序。官網
Dropwizard:偏向於自己使用的Web框架。用來構建Web應用程序,使用了Jetty、Jackson、Jersey和Metrics。官網
Feign:受Retrofit、JAXRS-2.0和WebSocket啟發的HTTP客戶端連接器(binder)。官網
Jersey:JAX-RS參考實現。官網
RESTEasy:經過JAX-RS規范完全認證的可移植實現。官網
RestExpress:一個Java類型安全的REST客戶端。官網
RestX:基於註解處理和編譯時源碼生成的框架。官網
Retrofit:類型安全的REST客戶端。官網
Spark:受到Sinatra啟發的Java REST框架。官網
Swagger:Swagger是一個規范且完整的框架,提供描述、生產、消費和可視化RESTful Web Service。官網
Blade:國人開發的一個輕量級的MVC框架. 它擁有簡潔的代碼,優雅的設計。官網
DataMelt:用於科學計算、數據分析及數據可視化的開發環境。官網
JGraphT:支持數學圖論對象和演算法的圖形庫。官網
JScience:用來進行科學測量和單位的一組類。官網
Apache Solr:一個完全的企業搜索引擎。為高吞吐量通信進行了優化。官網
Elasticsearch:一個分布式、支持多租戶(multitenant)全文本搜索引擎。提供了RESTful Web介面和無schema的JSON文檔。官網
Apache Lucene:是一個開放源代碼的全文檢索引擎工具包,是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。官網
Apache Shiro:執行認證、授權、加密和會話管理。官網
Bouncy Castle,涵蓋了從基礎的幫助函數到PGP/SMIME操作。官網:多途加密開發庫。支持JCA提供者(JCA provider)
Cryptomator:在雲上進行客戶端跨平台透明加密。官網
Keycloak:為瀏覽器應用和RESTful Web Service集成SSO和IDM。目前還處於beta版本,但是看起來非常有前途。官網
PicketLink:PicketLink是一個針對Java應用進行安全和身份認證管理的大型項目(Umbrella Project)。官網
FlatBuffers:高效利用內存的序列化函數庫,無需解包和解析即可高效訪問序列化數據。官網
Kryo:快速、高效的對象圖形序列化框架。官網
FST:提供兼容JDK的高性能對象圖形序列化。官網
MessagePack:一種高效的二進制序列化格式。官網
Apache Tomcat:針對Servlet和JSP的應用伺服器,健壯性好且適用性強。官網
Apache TomEE:Tomcat加Java EE。官網
Jetty:輕量級、小巧的應用伺服器,通常會嵌入到項目中。官網
WebSphere Liberty:輕量級、模塊化應用伺服器,由IBM開發。官網
WildFly:之前被稱作JBoss,由Red Hat開發。支持很多Java EE功能。官網
Apache Velocity:提供HTML頁面模板、email模板和通用開源代碼生成器模板。官網
FreeMarker:通用模板引擎,不需要任何重量級或自己使用的依賴關系。官網
Handlebars.java:使用Java編寫的模板引擎,邏輯簡單,支持語義擴展(semantic Mustache)。官網
Thymeleaf:旨在替換JSP,支持XML文件的工具。官網
Apache JMeter:功能性測試和性能評測。官網
Arquillian:集成測試和功能行測試平台,集成Java EE容器。官網
AssertJ:支持流式斷言提高測試的可讀性。官網
Awaitility:用來同步非同步操作的DSL。官網
Cucumber:BDD測試框架。官網
Gatling:設計為易於使用、可維護的和高性能負載測試工具。官網
Hamcrest:可用來靈活創建意圖(intent)表達式的匹配器。官網
JMockit:用來模擬靜態、final方法等。官網
JUnit:通用測試框架。官網
Mockito:在自動化單元測試中創建測試對象,為TDD或BDD提供支持。官網
PowerMock: 支持模擬靜態方法、構造函數、final類和方法、私有方法以及移除靜態初始化器的模擬工具。官網
REST Assured:為REST/HTTP服務提供方便測試的Java DSL。官網
Selenide:為Selenium提供精準的周邊API,用來編寫穩定且可讀的UI測試。官網
Selenium:為Web應用程序提供可移植軟體測試框架。官網
Spock:JUnit-compatible framework featuring an expressive Groovy-derived specification language.官網兼容JUnit框架,支持衍生的Groovy范的語言。
TestNG:測試框架。官網
Truth:Google的斷言和命題(proposition)框架。官網
Unitils:模塊化測試函數庫,支持單元測試和集成測試。官網
WireMock:Web Service測試樁(Stub)和模擬函數。官網
Apache Commons:提供各種用途的函數,比如配置、驗證、集合、文件上傳或XML處理等。官網
args4j:命令行參數解析器。官網
CRaSH:為運行進行提供CLI。官網
Gephi:可視化跨平台網路圖形化操作程序。官網
Guava:集合、緩存、支持基本類型、並發函數庫、通用註解、字元串處理、I/O等。官網
JADE:構建、調試多租戶系統的框架和環境。官網
javatuples:正如名字表示的那樣,提供tuple支持。盡管目前tuple的概念還有留有爭議。官網
JCommander:命令行參數解析器。官網
Protégé:提供存在論(ontology)編輯器以及構建知識系統的框架。官網
Apache Nutch:可用於生產環境的高度可擴展、可伸縮的網路爬蟲。官網
Crawler4j:簡單的輕量級網路爬蟲。官網
JSoup:刮取、解析、操作和清理HTML。官網
Apache Tapestry:基於組件的框架,使用Java創建動態、強健的、高度可擴展的Web應用程序。官網
Apache Wicket:基於組件的Web應用框架,與Tapestry類似帶有狀態顯示GUI。官網
Google Web Toolkit:一組Web開發工具集,包含在客戶端將Java代碼轉為JavaScript的編譯器、XML解析器、RCP官網API、JUnit集成、國際化支持和GUI控制項。
Grails:Groovy框架,旨在提供一個高效開發環境,使用約定而非配置、沒有XML並支持混入(mixin)。官網
Ninja:Java全棧Web開發框架。非常穩固、快速和高效。官網
Pippo:小型、高度模塊化的類Sinatra框架。官網
Play:使用約定而非配置,支持代碼熱載入並在瀏覽器中顯示錯誤。官網
PrimeFaces:JSF框架,提供免費和帶支持的商業版本。包括若干前端組件。官網
Ratpack:一組Java開發函數庫,用於構建快速、高效、可擴展且測試完備的HTTP應用程序。官網
Spring Boot:微框架,簡化了Spring新程序的開發過程。官網
Spring:旨在簡化Java EE的開發過程,提供依賴注入相關組件並支持面向切面編程。官網
Vaadin:基於GWT構建的事件驅動框架。使用服務端架構,客戶端使用Ajax。官網
Blade:國人開發的一個輕量級的MVC框架. 它擁有簡潔的代碼,優雅的設計。官網
jBPM:非常靈活的業務流程管理框架,致力於構建開發與業務分析人員之間的橋梁。官網
Activity:輕量級工作流和業務流程管理框架。官網github
位元組碼操作
編程方式操作位元組碼的開發庫。
集群管理
在集群內動態管理應用程序的框架。
代碼分析
測量代碼指標和質量工具。
編譯器生成工具
用來創建解析器、解釋器或編譯器的框架。
外部配置工具
支持外部配置的開發庫。
約束滿足問題求解程序
幫助解決約束滿足問題的開發庫。
持續集成
CSV解析
簡化CSV數據讀寫的框架與開發庫
簡化資料庫交互的相關工具。
幫實現依賴翻轉範式的開發庫。官網
開發流程增強工具
從最基本的層面增強開發流程。
分布式應用
用來編寫分布式容錯應用的開發庫和框架。
分布式資料庫
對應用程序而言,在分布式系統中的資料庫看起來就像是只有一個數據源。
發布
以本機格式發布應用程序的工具。
文檔處理工具
處理Office文檔的開發庫。
函數式編程
函數式編程支持庫。
游戲開發
游戲開發框架。
GUI
現代圖形化用戶界面開發庫。
高性能計算
涵蓋了從集合到特定開發庫的高性能計算相關工具。
IDE
簡化開發的集成開發環境。
JSON
簡化JSON處理的開發庫。
JVM與JDK
目前的JVM和JDK實現。
基於JVM的語言
除Java外,可以用來編寫JVM應用程序的編程語言。
日誌
記錄應用程序行為日誌的開發庫。
機器學習
提供具體統計演算法的工具。其演算法可從數據中學習。
消息傳遞
在客戶端之間進行消息傳遞,確保協議獨立性的工具。
雜項
未分類其它資源。
應用監控工具
監控生產環境中應用程序的工具。
原生開發庫
用來進行特定平台開發的原生開發庫。
自然語言處理
用來專門處理文本的函數庫。
網路
網路編程函數庫。
ORM
處理對象持久化的API。
用來幫助創建PDF文件的資源。
性能分析
性能分析、性能剖析及基準測試工具。
響應式開發庫
用來開發響應式應用程序的開發庫。
REST框架
用來創建RESTful 服務的框架。
科學計算與分析
用於科學計算和分析的函數庫。
搜索引擎
文檔索引引擎,用於搜索和分析。
安全
用於處理安全、認證、授權或會話管理的函數庫。
序列化
用來高效處理序列化的函數庫。
應用伺服器
用來部署應用程序的伺服器。
模板引擎
在模板中替換表達式的工具。
測試
測試內容從對象到介面,涵蓋性能測試和基準測試工具。
通用工具庫
通用工具類函數庫。
網路爬蟲
用於分析網站內容的函數庫。
Web框架
用於處理Web應用程序不同層次間通訊的框架。
業務流程管理套件
流程驅動的軟體系統構建。
資源
社區
⑵ java頁面跳轉問題
先寫入類
當訪問http://....../hello.form的時候直接到類裡面,返回error,到配置文件裡面補全,找到/WEB_INF/jsp/error.jsp,裡面的jsp頁面顯示出來
⑶ 使用WebRTC搭建前端視頻聊天室——點對點通信篇
WebRTC給我們帶來了瀏覽器中的視頻、音頻聊天體驗。但個人認為,它最實用的特性莫過於DataChannel——在瀏覽器之間建立一個點對點的數據通道。在DataChannel之前,瀏覽器到瀏覽器的數據傳遞通常是這樣一個流程:瀏覽器1發送數據給伺服器,伺服器處理,伺服器再轉發給瀏覽器2。這三個過程都會帶來相應的消耗,佔用伺服器帶寬不說,還減緩了消息從發送到接收的時間。其實最理想的方式就是瀏覽器1直接與瀏覽2進行通信,伺服器不需要參與其中。WebRTC DataChannel就提供了這樣一種方式。
如果對WebRTC和DataChannel不太了解的同學,可以先閱讀如下文章:
- WebRTC的RTCDataChannel
- 使用WebRTC搭建前端視頻聊天室——信令篇
- 使用WebRTC搭建前端視頻聊天室——入門篇
當然伺服器完全不參與其中,顯然是不可能的,用戶需要通過伺服器上存儲的信息,才能確定需要和誰建立連接。這里通過一個故事來講述建立連接的過程:
不如釣魚去
一些背景:
現在,老劉聽說老姚釣魚技術高超,想和老姚討論釣魚技巧。只要老劉和老姚相互之間知道對方的門牌號以及憑證,就可以串門了:
老劉和老姚相互之間知道了對方的門牌號和小區出入憑證,他們相互之間有什麼需要交流的直接串門就行了,消息不再需要門衛老大爺來代為傳達了
換個角度
我們把角色做一個映射:
於是乎故事就變成了這樣:
這樣,就建立了一個點對點的信道,流程如下所示:
故事
老劉和老姚已經可以相互串門了,經過一段時間的交流感情越來越深。老姚的親友送了20斤葡萄給老姚,老姚決定送10斤給老劉。老姚畢竟年事已高,不可能一次帶10斤。於是乎,老姚將葡萄分成了10份,每次去老劉家串門就送一份過去。
這里可以做如下類比:
這其實就是通過datachannel傳輸文件的方式,首先將文件分片,然後逐個發送,最後再統一的進行組合成一個新的文件
分片
通過HTML5的File API可以將type為file的input選中的文件讀取出來,並轉換成data url字元串。這也就為我們提供了很方便的分片方式:
組合
通過datachannel發送的分片數據,我們需要將其進行組合,由於是data url字元串,在接收到所有包之後進行拼接就可以了。拼接完成後就得到了一個文件完整的data url字元串,那麼我們如何將這個字元串轉換成文件呢?
方案一:直接跳轉下載
既然是個dataurl,我們直接將其賦值給window.location.href自然可以下載,但是這樣下載是沒法設定下載後的文件名的,這想一想都蛋疼
方案二:通過a標簽下載
這個原理和跳轉下載類似,都是使用dataurl本身的特性,通過創建一個a標簽,將dataurl字元串賦值給href屬性,然後使用download確定下載後的文件名,就可以完成下載了。但是很快又有新問題了,稍微大一點的文件下載的時候頁面崩潰了。這是因為dataurl有大小限制
方案三:blob
其實可以通過給a標簽創建blob url的方式來進行下載,這個沒有大小限制。但是我們手上是dataurl,所以需要先進行轉換:
獲得blob後,我們就可以通過URL API來下載了:
這里有幾個點:
1. datachannel其實是可以直接傳送blob的,但是只有ff支持,所以傳data url
2. chrome下載是直接觸發的,不會進行詢問,firefox會先詢問後下載,在詢問過程中如果執行了revokeObjectURL,下載就會取消,囧
升級
如我們所知,WebRTC最有特點的地方其實是可以傳輸getUserMedia獲得的視頻、音頻流,來實現視頻聊天。但事實上我們的使用習慣來看,一般人不會一開始就打開視頻聊天,而且視頻聊天時很消耗內存的(32位機上一個連接至少20M左右好像,也有可能有出入)。所以常見的需求是,先建立一個包含datachannel的連接用於傳輸數據,然後在需要時升級成可以傳輸視頻、音頻。
看看我們之前傳輸的session description,它其實來自Session Description Protocol。可以看到wiki上的介紹:
這意味著什麼呢?我們之前建立datachannel是沒有加視頻、音頻流的,而這個流的描述是寫在SDP裡面的。現在我們需要傳輸視頻、音頻,就需要添加這些描述。所以就得重新獲得SDP,然後構建offer和answer再傳輸一次。傳輸的流程和之前一樣,沒什麼區別。但這一次,我們不需要傳輸任何的ice candidate,這里我曾經遇到了坑,經過國外大大的點撥才明白過來。
Peertc
我將datachannel和websocket組合,實現了一個構建點對點連接的庫Peertc,它提供非常簡潔的方式來建立連接和發送數據、文件和視頻/音頻流,詳情見github。走過路過的記得star一下哦,有什麼bug也非常希望能夠提出來。
最後
WebRTC的點對點方式能夠運用在很多場景:
- 如web qq這種Web IM工具,這就不說了
- 如象棋這種雙人對戰 游戲 ,每一步的數據伺服器時不關心的,所以完全可以點對點發送
- 一對一在線面試、在線教育,這其實是即時通信的一個業務方向
⑷ 有哪些it程序員的必備神器
URL Decoder/Encoder:https://meyerweb.com/eric/tools/dencoder/ 特別實用的一個用來處理URL編碼和解碼的小工具,你甚至可以直接將這個頁面的源代碼保存下來,這樣不需要連接上網也可以離線使用。附送的一個隱藏功能就是當你從任何地方拷貝信息過來的時候,它會自動去除拷貝過來的格式化信息,小編自己基本上每天都會使用這個小工具復制粘貼各種信息。
iTerm2是一款完全免費的開源軟體,可以完全替代MacOS的終端。iTerms功能強大,使用方便,可以讓你輕松且高效地管理和定製化你的工作流程。iTerm2的一些特色功能包括:標簽變色,智能選中,自動補齊,全屏展示所有的 tab並支持搜索(Exposé Tabs),豐富的快捷操作等。
Textpad這款工具具有無限制的撤銷/重做功能,並且能夠編輯超大文件,文件上限是系統虛擬內存大小。
Octotree:https://www.octotree.io/Github是目前使用最廣泛的版本控制工具,然而通過瀏覽器訪問Github的體驗並不是那麼友好,特別是當我們需要不斷地訪問不同文件夾裡面的文件的時候。Octotree正是這樣一款瀏覽器插件,它提供了類似IDE的便於訪問的代碼目錄樹,能夠提高我們在Github上工作效率。
Wireshark:這個工具可以用來監控機器上的TCP、HTTP等各層級的網路通信。作為後端開發,如果想看前端發來的請求到底都包含了哪些信息,又沒有前端的調試環境的話,使用Wireshark監控HTTP請求是很好的解決方案。自己在程序中發HTTP請求時,也可以使用它來檢查發出的HTTP請求是否符合自己的預期。
Mermaid:這個工具可以使用腳本語言直接渲染出流程圖、時序圖、甘特圖,寫文檔簡單快捷。免拖拽,免排版,格式控制統一。腳本也便於存放修改,樣式可以復用。還可以使用插件集成如Markdown編輯器,進行實時預覽。
spectacle:Mac free source 窗口控制工具,拖拽窗口到屏幕邊緣resize,也可以自定義快捷鍵。用起來跟Windows上面一樣。相比較於Moom,SizeUp,Divvy,spectacle支持滑鼠拖拽到邊緣resize,非常便利。
Tmux:一個虛擬終端可以管理多個會話,窗口和面板。執行 tmux 命令時就開啟了一個服務並創建了一個會話,窗口和面板。支持分屏,同時處理多個操作。不受斷網影響,避免丟失重要工作進度。方便演示與協作,支持結對編程。
Caniuse:https://caniuse.com/#home 通過這個網站,用戶能夠查詢主流瀏覽器特定版本對HTML,CSS和JS的支持情況。並且最重要的是它「免費」!
Visual Studio Code:這是微軟出品的IDE工具,跨平台(Linux,Mac,Windows)。輕量級內存佔用,品質穩定且免費。同時內置Git版本控制功能。值得一提的是插件生態豐富,安裝插件簡單,通過插件可以增加更豐富的語言支持、主題定製、文本自動格式化等能力。
⑸ IM 即時通訊聊天社交APP源碼,交友APP源碼
前端開發語言:VUE( 安卓,IOS,WEB為一套前端代碼)
伺服器端開發語言: PHP+WebSocket
資料庫:MySql + mongodb
前端打包工具:Hbuilder
伺服器搭建工具:寶塔 + Xshell
簡訊介面: 支持阿里雲
支付介面:支持支付寶
伺服器配置: 4核8G寬頻10兆以上
伺服器系統:Linux Centos 7.6 64位
基本功能說明及介紹:
1.發消息:語音、圖片、視頻、文字、表情、表情包、文件、名片等。
2.聊天:單聊、群聊。
3.自定義消息:發紅包、轉賬。
4.聊天記錄:清空聊天記錄、群管理、加群二維碼控制是否可加。
5.自定義添加鏈接。
6.我的錢包:後台可以充值、用戶充值、提現等。
7.創建群:可任意創建群,群成員數量不受限制,好友數量不受限。
8.群功能:設置群二維碼、群公告、群共享文件、頂置聊天、消息免打擾,屏蔽群信息、禁言、舉報、群管理、查找聊天記錄、禁止全員相互加好友、清空聊天記錄等。
9.好友聊天:文字、語音、音視頻通話、收藏、照片、小視頻、各種表情、傳送文件、發送位置、引用回復、撤回、復制、刪除、收藏、撤回、錄制、多選、發紅包,轉賬等。
11.會員登錄:注冊登錄、簡訊登錄。
12.賬號設置:修改密碼、語言切換、字體設置、隱私設置、安全設置、一鍵群發好友消息等。
13.用戶管理:登錄時間、登陸IP、更換頭像、更換名稱、設置密碼、批量生成用戶。
14.後台功能: 管理員列表、系統設置、用戶管理、群組管理、通訊錄管理、財務管理、會話管理、自定義網站、手機通訊錄
⑹ 有哪些好的網站學習Web開發
現在學習這樣的網站有很多很多,我就簡單的舉例幾個:網易雲課堂,騰訊課堂,慕課網,開課吧,潭州學院,51cto,還有自學網。如果你是零基礎,我建議你先學習html,css,jquery,中期學習js,後期可以學期目前流行的三大前端主流框架。
⑺ 程序員有哪些交流社區或者論壇
作為一名低代碼平台領域的廠商,經常去的一些國內社區網站及論壇,關於程序員的交流社區或者論壇,這里收集一些比較好的開發者社區供大家參考,具體如下:
1、CSDN -專業開發者社區 IT技術交流平台
2、IT圈,圈圈精彩 - 原軟媒論壇、IT之家,國內最人氣的科技社交圈層,繼軟媒論壇、IT之家社區演變而來。
3、51CTO技術論壇-中國領先的IT技術社區 國內主流IT技術社區,論壇擁有大批IT技術人/IT專家
4、快速開發平台社區 -天翎論壇低代碼平台技術社區,主要是以低代碼開發平台為主的技術性論壇社區
⑻ 前端工程師一般都喜歡去哪些網站逛
前端工程師一般都比較喜歡的網站,推薦如下:
w3cschool
只要是學習者,學習跟電腦軟體,語言相關的知識,肯定要知道的一個網站,該網站由淺入深,非常基礎的給出了很多知識的概括。沒事的時候,經常去看看總能有意外的收獲。runoob
這個叫菜鳥教程網的,雖然叫「菜鳥」,其實很多知識點都已經達到了中等水平,和w3cschool差不多,做了一些整合,相對來說翻譯的中文比較多,可以結合著w3cschool一起看。javascript中文網
前端開發工程師都知道,對於前端開發來說想,學習最重要語言之一就是javascript,所以要想讓自己提升一個等級,javascript是必須精通的,這個網站非常基礎的介紹了javascript的語言使用方式。強烈建議新手觀看。Bootstrap
一個最主流的前端主流框架之一,目前認可度最高的一個前端框架,可以用來做移動端設計。非常的適用。最主要該網站上還提供了其他很多的相關連接地址。在學習的同時也可以擴展個人見識。如果你看到了這,那我接下來就不用介紹了,可以這么說 bootstrap這個網站里的很多東西,都是作為一個前端開發工程師學習的未來之路,例如React,Jquery,vue.js,webpack,angular.js等等等等。。。。
總結:其實前端開發是一個很廣的范疇,所謂的前端開發工程師也要看你的領域,有的只做網站頁面設計;有的製作web單頁設計,有的專門做手機端交互等等,上面我們沒提到的node.js就是前端開發的一個新領域,與其說是前端開發不如說是全端開發的新領域。知識真的是你學的越多,越發現,自己越渺小。
⑼ 大前端和前端在就業方向上有什麼差別
所謂的大前端其實就是前端+終端(android+ios),大前端是這幾年才開始的叫法,以前前端是指web前端,終端就是android,ios等。
因為現在技術的進步,web的體驗也有很大的提升,基本可以媲美終端原生的體驗,所以很多公司開始考慮用一套代碼,在各個端上來跑,這樣就可以減少很多工作量,同時降低企業的研發成本。
所以,現在就出現了各種大前端開發框架,很多公司也積極參與其中,對自己原有的業務進行重構升級,所以,大前端的叫法就越來越普遍了。
前端是指傳統意義上的web端,而大前端是指前端+終端,這兩個是不一樣的。
⑽ 跨端開發面面談之基於WebView的Hybrid開發模式
跨終端移動開發是近期准備總結的一個主題,作為這一系列的開始,首先簡單說說基於WebView的Hybrid混合開發模式。
有過混合應用開發經驗的同學,對基於WebView的Hybrid開發模式應該不會陌生。藉助於原生端各平台的WebView組件,可以實現Native和JavaScript的雙向通信,從而將Web App與Mobile App融合起來,開啟混合開發的新模式。
基於WebView的Hybrid開發模式到如今已經非常成熟,不再是一個實驗性新技術,而是廣泛應用在各大廠商的平台型應用如微信、手Q中。
JSBridge作為連接Native和JavaScript的橋梁,是基於WebView的Hybrid開發模式中的關鍵點。
在了解其通信原理後,再來看JSBridge究竟是什麼。從前端角度來看,可能會把JSBridge理解為業務開發過程中,以全局變數注入到WebView中,幫助調用原生API的JavaScript工具庫。這樣的理解不夠准確,按照我的理解,JSBridge不是一個標準的規范,基於原生系統為WebView組件提供的能力,已經可以建立起WebView JavaScript bridge,即使不再做更高程度的封裝,也可以完成從Native到JavaScript的雙向通信了。
我們所說的JSBridge,是對底層通道的抽象封裝,這一過程包括了原生和JavaScript兩側內容,在原生端需要考慮系統API差異,對上層調用提供統一介面,在JavaScript端需要考慮調用方式,請求管理等內容。JSBridge的設計實現已經是成熟技術了,其設計可以參考 In-depth Profiling of JSBridge 、 Hybrid APP架構設計思路 ,一個安卓端完整JSBridge實現可以參考 JsBridge實現 。
目前,基於WebView的Hybrid開發模式非常成熟,廣泛應用於各類平台型App中。實現一個完善的JSBridge是在現有App中集成使用Hybrid開發模式的基礎,在完成這一基礎設施建設後,大家繼續在各個方向深挖,在不同的維度不斷優化性能和體驗。
多數App的Hybrid部分做到上面部分,已經有了還不錯的體驗。在我的了解中,空間團隊在上面基礎上繼續優化給出的是當前做的更好的方案。其主要流程如下圖所示,詳細內容可以參考 QQ空間前端工程師如何做首屏優化
除了在現有App中集成使用這一開發模式,還可以使用這一技術開發獨立App。早期的PhoneGap、Cordova、現在的Ionic,是這一領域較為知名的開發框架。
我司前端技術棧曾以Angular為主,一些App也由前端團隊基於Angular技術棧選型Ionic。初入團隊曾維護過基於Angular 1.x的Ionic App,用於我司投資顧問服務客戶的以IM為主、綜合一些其他業務,可以算一個比較復雜的應用。
前端技術背景的同學,採用Ionic框架開發App的學習成本不高。開發過程中仍在沿用前端技術,寫的仍是Web App,跑在原生WebView容器中。採用Ionic提供的組件庫,可以快速搭建項目界面。其擴展原生的機制也比較方便,如有原生能力的需求,並且沒有現成實現的,可以自行封裝使用,不過這個過程就需要原生開發同學的參與了。在我們的上述App開發中,主要是安卓端消息推送模塊由原生開發同學提供了支持,其餘對原生能力的需求如拍照、相冊訪問等常見需求,都有現成方案。
然而,採用Ionic完成上述應用,也有明顯不足的地方。首先是聊天列表方面,我們知道,如微信和QQ聊天窗口,這是一個異構的無限滾動長列表,在進入聊天界面時,一般只載入最近的一屏聊天數據,然後通過滾動載入歷史消息。在原生端完成這一需求有各種常見手段,而僅靠Web端技術,在各種折騰後,效果都不盡如人意。其次是動畫,這里的動畫包括了換頁動畫和其他動畫,流暢程度一般。最後是前端開發通病,要處理瀏覽器兼容性問題,crosswalk只是一個理論解決方案,其體積限制了幾乎不會被採用。
Ionic不斷迭代,新的版本中依賴新的Angular。新的Angular與Angular 1.x開發體驗已經完全不同,如果你還不了解,可以閱讀我們團隊書籍 揭秘Angular 2 。新的Ionic的開發體驗,相比以往也有提升,在其工具鏈中,提供了拖拽式項目生成工具
同時,Ionic pro提供的開發者工具,為應用整個生命周期提供了完善的支持平台,包括了以下功能,不過,使用需要付費。
站在當下來看,對於前端技術背景開發者來說,如果已有Angular基礎,不希望引入過高學習成本,需要快速開發一個復雜程度不算太高、或者對應用性能不是特別敏感的跨終端App,選擇Ionic依然是一個可行方案。
然而,既然你已經身在前端領域這樣一個技術更迭日新月異的圈子裡,還是應該使勁的折騰,關注跨端開發這個主題新的技術熱點,接下來我也會繼續談談在NativeScript、React Native、Flutter的一些體驗,可以保持關注。