ほとんどの Java ソフトウェア開発では、さまざまなライブラリが使用されます。最近、私たちは 10,000 のオープン ソース Java プロジェクトを分析し、最も一般的に使用される Java クラスを抽出しました。これらのクラスは、Java の標準ライブラリとサードパーティ ライブラリからのものです。各クラスは同じプロジェクト内で 1 回だけカウントされ、上位 100 クラスが以下のリストに表示されます。
次のリストは、最も使用されているクラスによって並べ替えられています。3 番目の値は、10,000 個のプロジェクトのうち、このクラスを使用しているプロジェクトの数を表しています。完全なリストはここにあります。
java.util.ArrayList(6958)
java.io.IOException(6866)
java.util.List(6784)
java.util.HashMap(5590)
java.util.Map(5413)
java.io.ファイル(5097)
java.io.InputStream(4234)
java.util.Set(3915)
java.util.Arrays(3884)
java.util.Iterator(3856)
java.util.コレクション(3643)
java.util.Date(3461)
java.util.HashSet(3278)
java.io.BufferedReader(3257)
java.util.コレクション(3192)
java.net.URL(3168)
java.io.FileInputStream(3044)
java.io.InputStreamReader(3023)
org.junit.テスト(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.ランダム(2171)
java.lang.reflect.Method(2141)
java.io.ByteArrayOutputStream(2112)
java.util.regex.Matcher(2012)
android.os.バンドル(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.アクティビティ(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.ツリーマップ(1227)
org.xml.sax.SAXException(1218)
javax.servlet.http.HttpServletRequest(1175)
java.io.PrintStream(1168)
java.util.ツリーセット(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.ロガー(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 パッケージを含む言語自体の一部であるためです。
次の図は、パッケージの使用状況の分布図です。
調査はソース コード ファイル内のインポート ステートメントを分析することであるため、String、Math、StringBuilder およびその他のクラスは大量に検出されなかったため、これらを除外する必要はありません。
プログラムクリーク経由