Gdzie mogę pobrać kod źródłowy metody macierzystej java? Na przykład chcę znać kod źródłowy System.arraycopy()
, ale nie mogę go znaleźć.Kod źródłowy metody macierzystej Java
Odpowiedz
Możesz pobrać kod źródłowy OpenJdk here.
W folderze jdk\src\share
można uzyskać kod źródłowy.
jdk\src\share\native
to natice method souce write in c i C++.
jdk\src\linux
źródło dla systemu Linux.jdk\src\windows
źródło dla systemu Windows.- souce for solaris.
jd\src\share
wspólne źródło.
np .: System.arrayCopy();
int plik hotspot\src\share\vm\oops\objArrayKlass.cpp
Linia 168:
void objArrayKlass::copy_array(arrayOop s, int src_pos, arrayOop d,
int dst_pos, int length, TRAPS) {
assert(s->is_objArray(), "must be obj array");
if (!d->is_objArray()) {
THROW(vmSymbols::java_lang_ArrayStoreException());
}
// Check is all offsets and lengths are non negative
if (src_pos < 0 || dst_pos < 0 || length < 0) {
THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
}
// Check if the ranges are valid
if ((((unsigned int) length + (unsigned int) src_pos) > (unsigned int) s->length())
|| (((unsigned int) length + (unsigned int) dst_pos) > (unsigned int) d->length())) {
THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
}
// Special case. Boundary cases must be checked first
// This allows the following call: copy_array(s, s.length(), d.length(), 0).
// This is correct, since the position is supposed to be an 'in between point', i.e., s.length(),
// points to the right of the last element.
if (length==0) {
return;
}
if (UseCompressedOops) {
narrowOop* const src = objArrayOop(s)->obj_at_addr<narrowOop>(src_pos);
narrowOop* const dst = objArrayOop(d)->obj_at_addr<narrowOop>(dst_pos);
do_copy<narrowOop>(s, src, d, dst, length, CHECK);
} else {
oop* const src = objArrayOop(s)->obj_at_addr<oop>(src_pos);
oop* const dst = objArrayOop(d)->obj_at_addr<oop>(dst_pos);
do_copy<oop> (s, src, d, dst, length, CHECK);
}
}
Nie jestem pewien, czy to źródło na przykład System.arraycopy() będzie tam. Patrzę na pakiet w 'openjdk \ jdk \ src \ share \ native \ java \ lang \ System.c', a zawiera on tylko plik nagłówkowy' java_lang_System.h' bez informacji, więc jesteś pewien jest tutaj? – eis
@to zaktualizowano powyżej. – lichengwu
przegłosowano dla aktualizacji, dzięki! – eis
Metody macierzyste i zaimplementowane inaczej przez maszynę wirtualną, z której korzystasz. Nie ma jednej implementacji tej metody, a w rzeczywistości inny kod może być wykonany na różnych architekturach lub maszynach wirtualnych.
- 1. Kod źródłowy API Java
- 2. Dziedziczenie rdzy: wywołanie metody macierzystej
- 3. Kod źródłowy dla klas biblioteki Java
- 4. Kod źródłowy Java - Process.destroy() dla Linuksa
- 5. Czy Matlab może generować kod źródłowy Java?
- 6. Gdzie jest kod źródłowy kompilatora java?
- 7. Jak zorganizować kod źródłowy klasy w języku Java?
- 8. Latex + kod źródłowy importu
- 9. Ruby, kod źródłowy Splat?
- 10. App kod źródłowy Inventor
- 11. SyntaxHighlighter v3.0.83 kod źródłowy
- 12. Kod źródłowy biblioteki C
- 13. Organizowanie R Kod źródłowy
- 14. Czy dostępny jest kod źródłowy dostępnych metod?
- 15. Jak pobrać kod źródłowy Eclipse?
- 16. Przekształć kod źródłowy na LaTeX
- 17. Jak uzyskać kod źródłowy strony internetowej z Java
- 18. Gdzie można znaleźć kod źródłowy Java 6 JSSE/JCE?
- 19. Jak znaleźć kod źródłowy macierzystego wywołania funkcji java
- 20. Dekompiluj skompilowany kod źródłowy ASP.NET
- 21. Wyświetl kod źródłowy w R
- 22. Jak tokenizować kod źródłowy Perla?
- 23. Android odtwarzacz muzyczny kod źródłowy
- 24. Ruby - kod źródłowy - kodowanie styl
- 25. Jak analizować kod źródłowy Blendera
- 26. Jak automatycznie wcięcić kod źródłowy?
- 27. Asp.Net Mvc 4 Kod źródłowy?
- 28. Naprawdę użyteczny kod źródłowy VB6
- 29. Filtrowanie kod źródłowy w Maven
- 30. Kod źródłowy procesu inicjowania Linuksa
metody Native i realizowane w różny sposób przez Virtual Machine, którego używasz. Nie ma jednej implementacji tej metody, a w rzeczywistości inny kod może być wykonany na różnych architekturach lub maszynach wirtualnych. – epsalon
@epsalon Myślę, że kwalifikuje się jako odpowiedź na to :) – eis
Czy Open-JDK może mieć ten kod źródłowy? Jestem bardzo pożądany chcę mieć wygląd tego natywnego kodu źródłowego, myślę, że powinny to być C/C++ kod źródłowy, Dzięki – Jack