Jython, 일원짜리 팁들

2008/05/27 00:21

Jython

요 며칠간 삽질을 한 소소한 기록이다. 기록은 기억을 지배하므로 남겨둔다.

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


« Previous : 1 : ... 200 : 201 : 202 : 203 : 204 : 205 : 206 : 207 : 208 : ... 279 : Next »