Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 17 java.base.jmod - Base Module
JDK 17 java.base.jmod is the JMOD file for JDK 17 Base module.
JDK 17 Base module compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\java.base.jmod.
JDK 17 Base module compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 Base module source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\java.base.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ java/lang/CharacterName.java
/* * Copyright (c) 2010, 2021, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package java.lang; import java.io.DataInputStream; import java.io.InputStream; import java.lang.ref.SoftReference; import java.util.Arrays; import java.util.Locale; import java.util.zip.InflaterInputStream; import java.security.AccessController; import java.security.PrivilegedAction; class CharacterName { private static SoftReference<CharacterName> refCharName; // codepoint -> bkIndex -> lookup -> offset/len private final byte[] strPool; private final int[] lookup; // code point -> offset/len in strPool private final int[] bkIndices; // code point -> lookup index // name -> hash -> hsIndices -> cpEntries -> code point private final int[] cpEntries; // code points that have name in strPool private final int[] hsIndices; // chain heads, hash indices into "cps" private CharacterName() { try (@SuppressWarnings("removal") DataInputStream dis = new DataInputStream(new InflaterInputStream( AccessController.doPrivileged(new PrivilegedAction<>() { public InputStream run() { return getClass().getResourceAsStream("uniName.dat"); } })))) { int total = dis.readInt(); int bkNum = dis.readInt(); int cpNum = dis.readInt(); int cpEnd = dis.readInt(); byte ba[] = new byte[cpEnd]; lookup = new int[bkNum * 256]; bkIndices = new int[(Character.MAX_CODE_POINT + 1) >> 8]; strPool = new byte[total - cpEnd]; cpEntries = new int[cpNum * 3]; hsIndices = new int[(cpNum / 2) | 1]; Arrays.fill(bkIndices, -1); Arrays.fill(hsIndices, -1); dis.readFully(ba); dis.readFully(strPool); int nameOff = 0; int cpOff = 0; int cp = 0; int bk = -1; int prevBk = -1; // prev bkNo; int idx = 0; int next = -1; int hash = 0; int hsh = 0; do { int len = ba[cpOff++] & 0xff; if (len == 0) { len = ba[cpOff++] & 0xff; // always big-endian cp = ((ba[cpOff++] & 0xff) << 16) | ((ba[cpOff++] & 0xff) << 8) | ((ba[cpOff++] & 0xff)); } else { cp++; } // cp -> name int hi = cp >> 8; if (prevBk != hi) { bk++; bkIndices[hi] = bk; prevBk = hi; } lookup[(bk << 8) + (cp & 0xff)] = (nameOff << 8) | len; // name -> cp hash = hashN(strPool, nameOff, len); hsh = (hash & 0x7fffffff) % hsIndices.length; next = hsIndices[hsh]; hsIndices[hsh] = idx; idx = addCp(idx, hash, next, cp); nameOff += len; } while (cpOff < cpEnd); } catch (Exception x) { throw new InternalError(x.getMessage(), x); } } private static final int hashN(byte[] a, int off, int len) { int h = 1; while (len-- > 0) { h = 31 * h + a[off++]; } return h; } private int addCp(int idx, int hash, int next, int cp) { cpEntries[idx++] = hash; cpEntries[idx++] = next; cpEntries[idx++] = cp; return idx; } private int getCpHash(int idx) { return cpEntries[idx]; } private int getCpNext(int idx) { return cpEntries[idx + 1]; } private int getCp(int idx) { return cpEntries[idx + 2]; } public static CharacterName getInstance() { SoftReference<CharacterName> ref = refCharName; CharacterName cname = null; if (ref == null || (cname = ref.get()) == null) { cname = new CharacterName(); refCharName = new SoftReference<>(cname); } return cname; } public String getName(int cp) { int off = 0; int bk = bkIndices[cp >> 8]; if (bk == -1 || (off = lookup[(bk << 8) + (cp & 0xff)]) == 0) return null; @SuppressWarnings("deprecation") String result = new String(strPool, 0, off >>> 8, off & 0xff); // ASCII return result; } public int getCodePoint(String name) { byte[] bname = name.getBytes(sun.nio.cs.ISO_8859_1.INSTANCE); int hsh = hashN(bname, 0, bname.length); int idx = hsIndices[(hsh & 0x7fffffff) % hsIndices.length]; while (idx != -1) { if (getCpHash(idx) == hsh) { int cp = getCp(idx); int off = -1; int bk = bkIndices[cp >> 8]; if (bk != -1 && (off = lookup[(bk << 8) + (cp & 0xff)]) != 0) { int len = off & 0xff; off = off >>> 8; if (bname.length == len) { int i = 0; while (i < len && bname[i] == strPool[off++]) { i++; } if (i == len) { return cp; } } } } idx = getCpNext(idx); } return -1; } }
⏎ java/lang/CharacterName.java
Or download all of them as a single archive file:
File name: java.base-17.0.5-src.zip File size: 8883851 bytes Release date: 2022-09-13 Download
2023-09-26, 44410👍, 1💬
Popular Posts:
If you are a Java developer, it is very often that you need to use some 3rd party libraries to perfo...
JDK 11 java.xml.jmod is the JMOD file for JDK 11 XML (eXtensible Markup Language) module. JDK 11 XML...
How to download and install ojdbc11.jar for Oracle 21c? ojdbc11.jar for Oracle 21c is a Java JDBC Dr...
Jackson is "the Java JSON library" or "the best JSON parser for Java". Or simply as "JSON for Java"....
How to download and install Apache XMLBeans Source Package? The source package contains Java source ...