Jython, 일원짜리 팁들
2008/05/27 00:21
요 며칠간 삽질을 한 소소한 기록이다. 기록은 기억을 지배하므로 남겨둔다.
jythonc로 컴파일(!)하면, JVM용 클래스 파일로 만들 수 있다.
- 다만, jythonc는 jython보다 버전이 늦게 올라 가는 듯?
- 자바에서 사용할 메소드들에는 "@sig public int getNumber(boolean flag)" 와 같은 표시를 해준다.
- jythonc로 컴파일 할 때에, -all 옵션을 주면, 여기저기 잘 붙는다.
Jython에는 unsigned가 없다.
- Jython 자체가 Java로 만들어졌고, JVM 위에서 돌아가기 때문인듯.
- array()에서 'B' 와 같은 unsigned byte도 당연히 지원되지 않는다.
Jython에서 만든 클래스를 Java에서 사용할 때,
- 생성자에 매개변수가 없으면 @sig를 안써도 된다. (1개 이상 있으면 써야함.)
- primitive type의 배열은 자이썬에서 리턴하고, 자바에서 받을 수 있다.
- Jython에서 String[]을 리턴할 방법은 없지만, ArrayList에 add()한 후에 리턴하면 된다.
- String의 인코딩은 UTF-8 인듯. (아마도..) 어차피 영문은 상관없다.
hex()의 결과는, Jython과 Python이 다르다.
- hex(-129)를 하면, Jython에서는 "0xffffff7f"가 나오고, Python에서는 "-0x81"이 나온다.
- 하지만, 사실 파이썬도 내부적으로는 0xffffff7f와 같은 2의 보수 형태로 저장한다. 2의 보수에서만 가능한 몇가지 성질이 그대로 적용된다.
- 즉, 파이썬이나 자이썬이나 음수에 대한 자료 저장 형식은 같지만, hex()를 하거나, "%X" % 숫자 등의 방법으로 16진수로 표현된 문자열로 변환하면 결과가 다르게 나온다. 자이썬은 그대로를 문자열로 옮겨주는 경우이고, 파이썬은 숫자만 먼저 바꾼 후에 부호를 나중에 붙이는 방식이다. 일장일단이 있다.
-- Jong10

