· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Java Language

자바를 처음 제작한 썬사.. 물론 썬사의 제임스 고슬링이 자바의 창시자이지만 썬사의 자바 공식 사이트에서는 자바를 언어가 아닌 하나의 기술로 다루고 있다. 그것은 자바가 한번 쓰고 어디서나 실행되는 자바 가상 머신 위에서 돌아가는 것에 초점을 맞추고 또한 컴퓨터라는 머신 외에도 모바일과 웹 등 다양한 곳에서 자바 랭귀지 위에 그 기술을 통해 많은 것을 이루려고 하고 있다.

하지만 Gnu Compiler Collection에서는 Java Language로 씌인 Source Code를 Native Code로 컴파일 해주는 GCJ를 제공하고 있다. 이를 이용하면 JVM이 필요없이 바로 실행되는 Native Code를 얻을 수 있다.

JavaLanguage 에는 포인터가 없나요? 어디선가 본 글에 의하면 JavaLanguage에서는 포인터라는 용어만 안 쓴다 뿐이지 C에서 포인터에 해당하는 개념이 있다고 하던데...
-- 레퍼런스라는 개념을 말하는게 아닐까요?

-- 실제로 자바에서는 포인터를 사용하고 있지만, 프로그램을 짜는 사람으로 하여금 없는 것처럼 보이게 하는것 같습니다. C/C++에서는 어떤 함수에 변수를 넘겨줄 때 변수의 값 자체를 넘겨줄수 있고, 포인터 주소만 넘겨 줄 수 있는데, 변수의 값만 넘겨줄 때에는 그 변수와 똑같이 메모리를 할당하고 값을 복사해서 넘겨 줍니다. 결국 변수가 하나가 더 생기게 되는거죠. 그러나 자바에서는 그 변수의 위치가 어디다 라고만 알려줍니다. 포인터죠.....? 그래서, 변수를 받은놈이 그 변수를 건드리면, 원본도 바뀌어져 있는데요, C/C++ 에서처럼 값만 넘겨서, 안바뀌게 하고 싶으면, clone 같은 놈을 쓰셔도 됩니다. 자바에서 그러한 것이 되는 이유는 메모리 관리를 효율적으로 하자는 레퍼런스 풀(이게 맞는지 가물합니다) 이라는 놈을 이용하게 되면서 그렇게 되는건데, 자세한 내용은 인터넷이나 책에도 많이 있을겁니다. (by zenit)

-- 레퍼런스와 포인터의 차이점은 첫째 포인터와 달리 엄격한 형검사가 수행된다는 점일겁니다. 즉 안전한 형 변환만이 허용됨으로 C/C++처럼 원 객체타입이 아닌, 임의의 형으로 변환(Casting)하여 객체를 조작하는 꼼수(?)가 불가능하다는 점이 가장 크겠죠. 또한, 포인터와 달리 한단계 까지만 간접 참조를 허용한다는 점도 있는것 같습니다.(by Qoo)




ID
Password
Join
You are farsighted, a good planner, an ardent lover, and a faithful friend.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-09-21 18:07:10
Processing time 0.0050 sec