рдЕрднрд┐рд╡рд╛рджрди рд╣рд░рдЬрд┐рддреЗрд▓реА!
рдореИрдВ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреН, рдореИрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рджреГрд╢реНрдп рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХрд┐ рдХреИрд╕реЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИрдВред

рдкрд┐рдЫрд▓реА рдмрд╛рд░ рд╣рдордиреЗ
ArrayList рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА, рдЖрдЬ рд╣рдо LinkedList рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред
рд▓рд┐рдВрдХреНрдбрд▓рд┐рд╕реНрдЯ - рд╕реВрдЪреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рджреНрд╡рд┐рджрд┐рд╢ рд╕реВрдЪреА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдФрд░ рдЕрдЧрд▓реЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдХреЗрдд рд╣реЛрддреЗ рд╣реИрдВред рдкреБрдирд░рд╛рд╡реГрддреНрдд рд░рд╛рдЙрдВрдб рдЯреНрд░рд┐рдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╕реВрдЪреА рдХреЗ рдЖрд░рдВрдн, рдордзреНрдп рдФрд░ рдЕрдВрдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рд╣рдЯрд╛рдиреЗ рдФрд░ рдЪрд┐рдкрдХрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗред рдЖрдкрдХреЛ рдЕрд╢рдХреНрдд рд╕рд╣рд┐рдд рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредрд╡рд╕реНрддреБ рдирд┐рд░реНрдорд╛рдг
List<String> list = new LinkedList<String>();
Footprint{Objects=2, References=4, Primitives=[int x 2]}
Object size: 48 bytes
рдирдИ рдмрдирд╛рдИ рдЧрдИ рд╕реВрдЪреА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ
рд╣реЗрдбрд░ рдФрд░
рдЖрдХрд╛рд░ рдХреЗ рдЧреБрдг рд╣реИрдВред
рд╣реЗрдбрд░ - рд╕реВрдЪреА рдХрд╛ рдЫрджреНрдо рддрддреНрд╡ред рдЗрд╕рдХрд╛ рдорд╛рди рд╣рдореЗрд╢рд╛
рд╢реВрдиреНрдп рд╣реЛрддрд╛ рд╣реИ , рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рд╡рд╛рд▓реЗ рдЧреБрдг рдХреНрд░рдорд╢рдГ рд╕реВрдЪреА рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕реВрдЪреА рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реИ, рдЗрд╕рд▓рд┐рдП
рдЕрдЧрд▓реЗ рдФрд░
рдореМрдЬреВрджрд╛ рдЧреБрдг рдЦреБрдж рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдиреА,
рд╣реЗрдбрд░ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП)ред рдЖрдХрд╛рд░ рд╕реВрдЪреА рдХрд╛ рдЖрдХрд╛рд░ 0 рд╣реИред
header.next = header.prev = header;

рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдирд╛
list.add("0");
Footprint{Objects=5, References=8, Primitives=[int x 5, char]}
Object size: 112 bytes
рдЬреЛрдбрд╝реЗрдВ
(рдорд╛рди) ,
addLast (рдорд╛рди) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗрдВ
рдФрд░
AddFirst (рдорд╛рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬреЛрдбрд╝рдирд╛ O (1) рд╕рдордп рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд▓рд┐рдВрдХреНрдбрд▓рд┐рд╕реНрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рдЕрдВрджрд░, рдПрдХ рд╕реНрдЯреИрдЯрд┐рдХ рдЗрдирд░
рдПрдВрдЯреНрд░реА рдХреНрд▓рд╛рд╕ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдирдП рддрддреНрд╡ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
private static class Entry<E> { E element; Entry<E> next; Entry<E> prev; Entry(E element, Entry<E> next, Entry<E> prev) { this.element = element; this.next = next; this.prev = prev; } }
рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреЛ рдЪрд░рдг рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
1)
рдПрдВрдЯреНрд░реА рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
Entry newEntry = new Entry("0", header, header.prev);

2) рдкрд┐рдЫрд▓реЗ рдФрд░ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЗ рд╕рдВрдХреЗрдд рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
newEntry.prev.next = newEntry; newEntry.next.prev = newEntry; size++;

рдХреЛрдИ рдЕрдиреНрдп рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗрдВ
list.add("1");
Footprint{Objects=8, References=12, Primitives=[int x 8, char x 2]}
Object size: 176 bytes
1)

2)

рд╕реВрдЪреА рдХреЗ рдордзреНрдп рдореЗрдВ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдирд╛
рд╕реВрдЪреА рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдРрдб (рдЗрдВрдбреЗрдХреНрд╕, рд╡реИрд▓реНрдпреВ) рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдРрдб (рдорд╛рди) рд╕реЗ рдЕрдВрддрд░ рдЙрд╕ рддрддреНрд╡ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд╣рд▓реЗ рдЗрдВрд╕рд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
(index == size ? header : entry(index))
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ (рд╕реВрдЪрдХрд╛рдВрдХ) рд╡рд┐рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреА рд╣реИред рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рджрд┐рд╢рд╛ рд╕реНрдерд┐рддрд┐
(рд╕реВрдЪрдХрд╛рдВрдХ <(рдЖрдХрд╛рд░ >> 1)) рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рддрддреНрд╡ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдореЗрдВ рд╕реЗ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЦреЛрдЬ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЦреЛрдЬ рд╕рдордп рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИ - рдУ (рдПрди)ред
private Entry<E> entry(int index) { if (index < 0 || index >= size) throw new IndexOutOfBoundsException("Index: "+index+", Size: "+size); Entry<E> e = header; if (index < (size >> 1)) { for (int i = 0; i <= index; i++) e = e.next; } else { for (int i = size; i > index; i--) e = e.prev; } return e; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЗрд╡рд▓рдкрд░
рдЗрдВрдбреЗрдХреНрд╕рдСрдЙрдЯрдСрдлрдмрд╛рдЙрдВрдбрдПрдХреНрд╕рд╕реЗрдкреНрд╢рди рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдпрд╛ рд╡рд░реНрддрдорд╛рди
рдЖрдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдпрд╣ рдЙрди рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ рдЬрд╣рд╛рдВ рд╕реВрдЪрдХрд╛рдВрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред
list.add(1, "100");
Footprint{Objects=11, References=16, Primitives=[int x 11, char x 5]}
Object size: 248 bytes
1)

2)

рдЖрдЗрдЯрдо рд╣рдЯрд╛рдПрдВ
рд╕реВрдЪреА рд╕реЗ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:
-
рд╣рдЯрд╛рдиреЗ () ,
рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪреА рдХреА рд╢реБрд░реБрдЖрдд рдпрд╛ рдЕрдВрдд рд╕реЗ, O (1) рдХреЗ рджреМрд░рд╛рди
рд╣рдЯрд╛рдиреЗ ( );
- O (n) рд╕рдордп рдХреЗ рджреМрд░рд╛рди
рдирд┐рдХрд╛рд▓реЗрдВ (рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛) рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдФрд░
рдирд┐рдХрд╛рд▓реЗрдВ (рдорд╛рди) рдорд╛рди рджреНрд╡рд╛рд░рд╛ред
рдореВрд▓реНрдп рд╕реЗ рд╣рдЯрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
list.remove("100");
Footprint{Objects=8, References=12, Primitives=[int x 8, char x 2]}
Object size: 176 bytes
рд╣рдЯрд╛рдиреЗ (рдорд╛рди) рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░, рд╕реВрдЪреА рдХреЗ рд╕рднреА рддрддреНрд╡ рд╕рд╣реА рдХреЗ рд▓рд┐рдП рд╕реНрдХреИрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рдЖрдЗрдЯрдо рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕реВрдЪреА рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ 3 рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
1) рд╕рдВрдмрдВрдзрд┐рдд рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ

2) рдкрд┐рдЫрд▓реЗ рдФрд░ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЗ рд╕рдВрдХреЗрдд рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

3) рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдХреА рдУрд░ рд╕рдВрдХреЗрдд рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рд╕реНрд╡рдпрдВ рддрддреНрд╡ рдХрд╛ рд╡рд┐рд╕реНрдорд░рдг
e.next = e.prev = null; e.element = null; size--;

iterators
рддрддреНрд╡реЛрдВ рдХреА рдЕрдкрдиреА рдЦреБрдж рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк "рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд" рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рдЕрдВрджрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреЗ рд╕рдорд╛рди рд╣реИрдВред
ListIterator<String> itr = list.listIterator();
рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рд╕реВрдЪреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реВрдЪрдХ рдХреЛ рд░рдЦреЗрдЧрд╛ред рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рди рд╕реЗ рддрддреНрд╡реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рднреА рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ
рд╕реВрдЪреА-рд╕реВрдЪреА (рдЗрдВрдбреЗрдХреНрд╕) рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рд╕реЗ рдХреНрд░реЙрд▓рд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк
descendingIterator () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдХ
ListIterator рдПрдХ
рд╕рдорд╡рд░реНрддреА ModificationException рдХреЗ рд╕рд╛рде рдмрдВрдж
рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐, рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реВрдЪреА рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЗрдЯреНрд░реЗрдЯрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдареАрдХ рд╣реИ, рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рддрддреНрд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд╛ рдПрдХ рдЖрджрд┐рдо рдЙрджрд╛рд╣рд░рдг:
while (itr.hasNext()) System.out.println(itr.next());
рдкрд░рд┐рдгрд╛рдо
- рд▓рд┐рдВрдХреНрдбрд▓рд┐рд╕реНрдЯ рд╕реЗ рдЖрдк рдПрдХреНрд╕реЗрд╕ рдЯрд╛рдЗрдо рдУ (1) рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреИрдХ, рдХреНрдпреВ рдпрд╛ рдбрдмрд▓ рдХрддрд╛рд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;
- рдпрд╣ рд╕реВрдЪреА рдХреЗ рдмреАрдЪ рд╕реЗ рдбрд╛рд▓рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдпрд╛ рдорд╛рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реИрдЦрд┐рдХ рд╕рдордп O (n) рд▓реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, ListIterator.add () рдФрд░ ListIterator.remove () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪреА рдХреЗ рдордзреНрдп рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдирд┐рдХрд╛рд▓рдирд╛ O (1) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА;
- рдЖрдк рдЕрд╢рдХреНрдд рд╕рд╣рд┐рдд рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╡рд░рдг рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ;
- рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдирд╣реАрдВред
рд╕рдВрджрд░реНрдн
рд▓рд┐рдВрдХреНрдбрд▓рд┐рд╕реНрдЯ рд╕реВрддреНрд░
JDK7 рд╕реЗ рд▓рд┐рдВрдХреНрдбрд▓рд┐рд╕реНрдЯ
JDK рдХреЗ рд╕реНрд░реЛрдд
OpenJDK рдФрд░ рд╡реНрдпрд╛рдкрд╛рд░ 6 рд╕реНрд░реЛрдд рд░рд┐рд▓реАрдЬрд╝ - рдмрд┐рд▓реНрдб b23рдХрдмреНрдЬреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ
рд╕реНрдореГрддрд┐-рдорд╛рдкрдХ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдкрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ
рдЕрдорд░реВрдж (Google рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА) рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред