์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- C++ ๋ฐ Java ์ฝ๋์์ ๋ฐ์ํ ์์ธ๋ ์ด์ Python ์ฝ๋์์ ์์ธ๊ฐ ๋ฐ์ํ ๋ ์์ธ ์คํ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ์์ธ ์คํ์ ๋ํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ๋ ์ด์ stacktrace()๋ฅผ ํธ์ถํ ํ์๊ฐ ์์ต๋๋ค.
- ํตํ ์๋ต ์๋๊ฐ 3๋ฐฐ ๋นจ๋ผ์ก์ต๋๋ค.
- ์ ์ก ์๋๊ฐ ํฌ๊ฒ(ํฌ๊ธฐ ๋จ์๋ก) ์ฆ๊ฐํ์ต๋๋ค.
๋ค์ฐจ์ ๋ฐฐ์ด์ numpy ๋ฒํผ. ๋ค์ฐจ์ ๊ธฐ๋ณธ ์์๋ ์ฐ์ C ๋ ์ด์์์ ์ฌ์ฉํ์ฌ JVM ๋ด๋ถ์์ ์์ฑ๋ ์ฝ๊ธฐ ์ ์ฉ ๋ณต์ฌ๋ณธ์ ์ ๋ฌํฉ๋๋ค. - ๋
ธ์ถ๋ ๋ชจ๋ ๋ด๋ถ๋ CPython ๊ตฌํ์ผ๋ก ๋์ฒด๋์์ผ๋ฉฐ ๊ธฐํธ __javaclass__, __javavalue__ ๋ฐ __javaproxy__
์ญ์ ๋์์ต๋๋ค. jpype ํด๋์ค ์ ํ์์ ์์๋๋ ๋ชจ๋ CPython ์ ํ์ ์ ์ฉ Java ์ฌ๋กฏ์ด ์ถ๊ฐ๋์์ต๋๋ค. ๋ชจ๋ ๊ฐ์ธ ํ ์ด๋ธ์ด CPython์ผ๋ก ์ด๋๋์์ต๋๋ค. ์ด์ Java ์ ํ์ ์ ํ ์ฌ๋กฏ์ ์ฌ์ฉํ๋ JClass ๋ฉํํด๋์ค์์ ์์๋์ด์ผ ํฉ๋๋ค. Python ๊ธฐ๋ณธ ํด๋์ค์ ๋ํ ๋ฏน์ค์ธ์ ํ์ฉ๋์ง ์์ต๋๋ค. ์ ํ์ Object, Proxy, Exception, Number ๋ฐ Array์ด๋ฉฐ CPython์ ๋ด๋ถ ๊ตฌํ์์ ์ง์ ์์๋ฉ๋๋ค. - ์ถ์ ๋ฐ ์์ธ ์ฒ๋ฆฌ๊ฐ ํฅ์๋์์ต๋๋ค.
- ์ด์ ๋ฐฐ์ด ์กฐ๊ฐ์ numpy ๋ฐฐ์ด๊ณผ ๊ฐ์ด ์๋ณธ์ ๋ค์ ์ฐ๊ธฐ๋ฅผ ์ง์ํ๋ ๋ทฐ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฐฐ์ด ์ฌ๋ผ์ด์ฑ์ ๊ฒฝ์ฐ ๋จ๊ณ๋ณ(์ฌ๋ผ์ด์ค(์์, ์ค์ง, ๋จ๊ณ))๋ก ๊ฐ์ ์ค์ ํ๊ณ ๊ฒ์ํ ์ ์๋๋ก ์ง์๋ฉ๋๋ค.
- ์ด์ ๋ฐฐ์ด์ "__reversed__"๋ฅผ ์ง์ํฉ๋๋ค.
- ์ด์ Java ๋ฐฐ์ด์ memoryview API๋ฅผ ์ง์ํ๊ณ ๋ฒํผ ๋ด์ฉ์ ์ ๋ฌํ๊ธฐ ์ํด numpy์ ๋ํ ์ข ์์ฑ์ ์ ๊ฑฐํฉ๋๋ค.
- Numpy๋ ๋ ์ด์ ์ข ์์ฑ์ด ์๋๋ฉฐ(์ถ๊ฐ) numpy ์ง์์ผ๋ก ์ปดํ์ผํ์ง ์๊ณ ๋ numpy๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์กํ ์ ์์ต๋๋ค.
- JInterface๋ ๋ฉํ ํด๋์ค๋ก ์ค๊ณ๋์์ต๋๋ค. ์ธํฐํ์ด์ค๋ฅผ ํ์ธํ๋ ค๋ฉด isinstance(cls, JInterface)๋ฅผ ์ฌ์ฉํ์ธ์.
- ๋๋ฝ๋ TLD "mil", "net" ๋ฐ "edu"๋ฅผ ๊ธฐ๋ณธ ๊ฐ์ ธ์ค๊ธฐ์ ์ถ๊ฐํ์ต๋๋ค.
- ์์ ์ค UnsupportedClassVersion์ ๋ํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๊ฐ์ ๋์์ต๋๋ค.
- java.util.Map์ ์ด์ ์์๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ KeyError๋ฅผ ๋ฐ์์ํต๋๋ค. null์ธ ๊ฐ์ ์ฌ์ ํ โโ์์๋๋ก None์ ๋ฐํํฉ๋๋ค. ๋น ํค๋ฅผ None์ผ๋ก ์ฒ๋ฆฌํ๋ ค๋ฉด get()์ ์ฌ์ฉํ์ธ์.
- ๋ชฉ๋ก์ ์ ๊ฑฐ(Object)์ ์ ๊ฑฐ(int) ์ฌ์ด์ ์ด์ํ๊ฒ ๊ณผ๋ถํ๊ฐ ๋ฐ์ํ๋ฏ๋ก java.util.Collection์ ์ ๊ฑฐํ์ต๋๋ค. ๊ธฐ๋ณธ Java ๋์์ ์ก์ธ์คํ๋ ค๋ฉด Java Remove() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ธ์. ํ์ง๋ง ์ค๋ฒ๋ก๋ ์ ์ด๋ฅผ ์ํด์๋ ์ ํ ์บ์คํ ์ ์ ๊ทน ๊ถ์ฅํฉ๋๋ค.
- ์ด์ java.util.List ์์์ ์ก์ธ์คํ ๋ IndexError ์์ธ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ java.lang.IndexOutOfBoundsException์ ํฌ์ฐฉํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru