英文原文:Top 100 Classes Used in Java Projects
大部分的 Java 软件开发都会使用到各种不同的库。近日我们从一万个开源的 Java 项目中进行分析,从中提取出最常用的 Java 类,这些类有来自于 Java 的标准库,也有第三方库。每个类在同一个项目中只计数一次,下面的列表中显示前 100 名的类。
以下列表中按使用最多的类进行排序,第三个数值表示 10000 个项目里使用到该类的项目数,而完整的列表请看 here.
java.util.ArrayList (6958)
java.io.IOException (6866)
java.util.List (6784)
java.util.HashMap (5590)
java.util.Map (5413)
java.io.File (5097)
java.io.InputStream (4234)
java.util.Set (3915)
java.util.Arrays (3884)
java.util.Iterator (3856)
java.util.Collections (3643)
java.util.Date (3461)
java.util.HashSet (3278)
java.io.BufferedReader (3257)
java.util.Collection (3192)
java.net.URL (3168)
java.io.FileInputStream (3044)
java.io.InputStreamReader (3023)
org.junit.Test (3008)
java.io.FileOutputStream (2843)
java.io.FileNotFoundException (2669)
java.io.OutputStream (2563)
java.util.regex.Pattern (2469)
java.io.Serializable (2437)
java.util.LinkedList (2372)
java.text.SimpleDateFormat (2245)
java.util.Properties (2190)
java.util.Random (2171)
java.lang.reflect.Method (2141)
java.io.ByteArrayOutputStream (2112)
java.util.regex.Matcher (2012)
android.os.Bundle (2007)
java.util.logging.Logger (1999)
java.io.UnsupportedEncodingException (1968)
org.junit.Before (1920)
java.util.Comparator (1896)
java.io.ByteArrayInputStream (1868)
java.io.PrintWriter (1862)
java.util.Calendar (1854)
android.app.Activity (1843)
java.net.MalformedURLException (1828)
android.content.Context (1780)
android.view.View (1731)
java.util.Locale (1719)
java.util.Enumeration (1709)
java.util.Map.Entry (1705)
java.io.FileWriter (1677)
java.io.FileReader (1651)
android.util.Log (1614)
android.content.Intent (1601)
java.lang.reflect.InvocationTargetException (1594)
java.util.logging.Level (1557)
java.lang.reflect.Field (1499)
java.io.StringWriter (1499)
android.widget.TextView (1442)
java.util.LinkedHashMap (1409)
java.io.Reader (1390)
java.net.URI (1377)
java.io.Writer (1339)
java.text.ParseException (1318)
junit.framework.TestCase (1318)
java.io.OutputStreamWriter (1295)
java.io.StringReader (1279)
java.io.BufferedWriter (1265)
java.util.Vector (1254)
java.util.StringTokenizer (1251)
java.text.DateFormat (1246)
java.util.concurrent.TimeUnit (1237)
java.io.BufferedInputStream (1235)
java.util.TreeMap (1227)
org.xml.sax.SAXException (1218)
javax.servlet.http.HttpServletRequest (1175)
java.io.PrintStream (1168)
java.util.TreeSet (1160)
android.widget.Toast (1157)
java.util.Hashtable (1154)
java.lang.reflect.Constructor (1139)
java.net.URLEncoder (1134)
java.security.NoSuchAlgorithmException (1134)
org.w3c.dom.Document (1130)
android.widget.Button (1129)
org.junit.After (1128)
javax.servlet.http.HttpServletResponse (1109)
java.awt.Color (1099)
java.net.URISyntaxException (1085)
javax.servlet.ServletException (1081)
javax.xml.parsers.DocumentBuilderFactory (1076)
java.lang.annotation.Retention (1075)
java.security.MessageDigest (1072)
java.util.concurrent.Executors (1062)
java.net.UnknownHostException (1057)
org.slf4j.Logger (1054)
java.sql.SQLException (1043)
org.slf4j.LoggerFactory (1042)
java.util.UUID (1040)
java.net.InetAddress (1026)
junit.framework.Assert (1011)
android.view.ViewGroup (1005)
java.util.concurrent.ConcurrentHashMap (1001)
java.awt.event.ActionEvent (995)
上表中,一点也不奇怪,有 85 个是 Java 的标准库,因为这是语言本身的一部分,涉及 util、lang 和 io 包。
下图是包使用的分布图:
该调查是分析源码文件中的 import 语句,因此你并没有发现大量的 String, Math, StringBuilder 等类,所以没必要对它们进行排除。
via programcreek