이클립스에 내장된 자바파서 활용하기 #1

이클립스는 JDT라는 자바개발환경을 포함하고 있습니다. 그리고 JDT는 자바개발과 관련하여 다양한 기능을 제공(e.g. Code Formatting)하기 위해 자바파서와 AST를 내장하고 있습니다. 따라서 이 부분을 잘 뜯어서 사용하면 훌륭한(!) 자바 파서를 공짜로 얻는 셈이 되는 것이죠.

앞으로 몇부에 걸쳐 JDT에 내장된 자바파서와 AST를 활용할 수 있는 방법을 설명하려고 합니다. 1부에서는 AST의 구조를 파악하는데 도움이 되는 ASTExplorer를 실행해보도록 하겠습니다. 이 과정에서 개발환경을 설정(e.g. 클래스패스 설정)하는 방법도 함께 다루겠습니다. 질문은 덧글로 남겨주세요.

올초에 빠른 시간안에 자바 코드 읽어 다른 형태의 코드로 변환하는 프로그램을 개발해야 했는데, 여러가지 방법을 찾아 고민하던 중에, JDT에 내장된 자바파서를 활용방안을 다룬 다음 웹문서를 발견하게 되었습니다.

Exploring Eclipse’s ASTParser

이 문서에서 ASTExplorer라는 예제 프로그램을 다운 받을 수 있는데, 이클립스 v3.02를 기준으로 하고 있어 다른 버전의 이클립스에 이 프로젝트를 import 하는 경우, 클래스패스에 추가된 JDT 라이브러리의 경로와 이름이 달라 에러가 발생합니다.

이 문제를 해결하는 가장 쉬운 방법은 클래스패스에 등록된 라이브러리를 지우고, eclipse\plugins에 존재하는 라이브러리를 클래스 패스에 추가하는 것입니다만 불필요한 라이브러리가 많이 추가되겠죠?

제가 사용하는 User Library를 첨부합니다. (이클립스 v3.3.1.1 기준) User Libraries에서 Import 하시면 됩니다.

jk10.userlibraries
첨부한 User Library를 클래스패스에 추가하셔도 JDT 버전이 올라가면서 변경된 부분 때문에 컴파일 에러가 발생할 것 입니다.

ASTMain.java의 다음 2라인의 코드를

return new NameEnvironmentAnswer(unit);
return new NameEnvironmentAnswer(classFileReader);

다음과 같이 수정해 주시면 컴파일 에러가 해결됩니다.

return new NameEnvironmentAnswer(unit, null);
return new NameEnvironmentAnswer(classFileReader, null);

ASTMain.java와 ASTExplorer.java 모두 main 메서드를 가지고 있습니다. ASTMain.java의 코드를 읽어보면 AST를 생성하는 작업을 정의하고 있는데, JDT 버전이 달라서 그런지 Exception이 발생하며 제대로 실행되지 않습니다.

ASTExplorer.java의 경우 실행에 문제가 없습니다. 실행해 보시면 다음과 같은 화면을 보실 수 있습니다.

사용자 삽입 이미지
이 프로그램은 JDT 내장 자바파서가 생성하는 AST 객체의 구조를 한눈에 파악할 수 있도록 화면 왼쪽에 AST의 구조를, 화면 오른쪽에 소스코드를 보여줍니다. AST에 익숙하지 않은 경우에 큰 도움을 주는 프로그램이죠.

AST에 대한 API Reference는 이클립스의 Help Contents에서 찾아 볼 수 있습니다. 웹에서 확인하고 싶으신 경우 다음 URL을 참조하세요.

http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/dom/package-summary.html

1부에서는 간단히(?) JDT에 포함된 파서와 AST를 활용한 ASTExplorer를 실행해 보았습니다. 2부에서는 자바소스코드를 읽어 AST를 얻는 방법에 대하여 설명하겠습니다. (물론 ASTExplorer 소스코드를 읽어보시면 쉽게 이해하실 수 있겠습니다만… ^^;)

대한민국 프로페셔널의 조건




대한민국 프로페셔널의 조건
상세보기

김현기 지음 |
한스미디어 펴냄
프로 인재를 키우는 프로페셔널 대한민국이 되는 길! 당신은 프로페셔널인가? 현대의 절대적 생존법칙은 바로 ‘프로페셔널로 성장하는 것’이다. 전문성과 프로의식 없이는 살아남을 수 없다. 그렇다면 대한민국 프로페셔널의 역랑은 어느 정도일까? 과연 치열한 글로벌 경쟁에서 승리할 수 있을까? 이 책은 대한민국 프로패셔널리즘의 현주소를 분석하고, 최고의 프로페셔널로 성장하기 위한 방법을 제시한다. 동아일보 미래전

인터넷 교보문고에서 책을 둘러보다 강렬한 제목에 이끌려 이 책의 목차를 살펴보고는, 꼭 읽어보고 싶다는 생각이 들어 구입하게 되었다. 자기계발서를 적잖이 읽어본 결과 내용이 고만고만하다는 결론을 내리고, 요즘에는 웬만해서는 자기계발서를 읽지 않는 편임에도 불구하고 이 책은 왠지 놓치면 안될것만 같았다.

이 책은 총 4부로 구성되어있다. 1부에서는 왜 프로페셔널이 되어야 하는지를 소개하고 있다. 글로벌 환경에서 대한민국 프로페셔널의 강점과 약점을 분석한 부분이 눈에 띈다. 2부는 분야별로 대한민국의 프로페셔널을 찾아 소개한다. (경영/경제 분야에 5위로 우리회사 사장님이 등장!) 박지성, 안철수 등 워낙 유명한 사람들의 이야기는 이미 그들의 책으로 접했기 때문에 특별할 것이 없었지만, 처음 알게된 프로들의 이야기는 흥미로웠다. 3부, 4부가 이 책의 주된 내용이라 할 수 있는데, 3부에서는 개개인이 프로가 되기 위해 갖추어야 할 7가지에 대하여, 4부에서는 프로를 만들어 낼 수 있는 조직, 기업이 되기 위해 갖추어야 할 7가지에 대하여 소개하고 있다.

프로가 되기 위한 실천 방안은 마치 그동안 읽어온 자기계발 서적에 소개된 노하우를 빠짐없이 요약정리해 놓은 것과 같은 인상을 주었다. 그 만큼 신경써서 집필한 책이 아닐까 하는 생각이 든다.

직장생활을 하는 입장에서 피부에 와닿는 이야기가 많았다. 덕분에 어떠한 자세로 일해야 하는지에 대하여 생각할 기회를 가질 수 있었다. 꼼꼼히 다시 읽고 생각하면서 회사생활에 바람직한 변화를 가져올 수 있도록 노력해볼 생각이다.

숭실대학교

지난 일요일에는 여자친구와 숭실대학교에 다녀왔다. (다음에 함께 집에 다녀오는 주말에는 여자친구가 다녔던 부산대학교에 가볼 계획) 늦잠을 자고 느지막히 만난지라 둘다 배가 너무 고파서 일단 점심을 먹기로 했다. 숭실대도 식후경!

숭실대학교

그리하여 찾은 곳은 이레김밥! 개인적으로 가장 좋아하고 자주 찾았던 곳이다. 김밥도 김밥이지만 나는 이 곳의 라면을 참 좋아한다. 지금껏 먹어본 라면중에 가히 최고라고 할 수 있을 정도로…

숭실대학교

항상 즐겨먹던 참치김밥+치즈김밥+라면 조합으로 점심을 해결하고 정보대부터 탐방(?)을 시작했다. 정보대는 큰 변화 없이 그대로였다. 제일 먼저 학부생 연구실 001에 들러 홍섭이와 대현이를 만났다. 내가 졸업할 때 군대가있던 녀석들이 돌아와서 학교를 지키고 있는 모습을 보니 마음이 든든(?)했다.

숭실대학교

의자 없이 횡한 로비와 2층 강의실을 둘러보고, 1층에 설치된 컴퓨터에서 ‘강철중’을 예매한 뒤 정보대를 빠져나왔다. 학교 안으로 들어와 도서관 뒤를 돌아 새로 지어진 건물을 구경했다. 교양수업을 듣던 옛 인문대 자리에는 로스쿨을 위한 건물 공사가 한창이였다.

숭실대학교

마지막으로 운동장이 내려다 보이는 의자에 앉아 음료수 한잔하고, 우연히 만난 후배의 설문조사를 도와준 후 학교를 떠났다. 처음 입학했을때의 모습과 너무나 달라서 생각만큼 추억에 잠기거나 하지는 않았던 것 같다.

백마상의 입에 꽂혀있던 맥주병이 조금은 쓸쓸해 보였지만, 여러모로 학교가 발전해 가고 있는 듯 하여 기분이 좋았다. 처음 학교에 등록하러 왔을 때 숭실대의 첫인상은 70년대 공장과 흡사한 모습을 한 공대 건물이였는데, 이제는 웅장한 정문과 높은 형남공학관의 위세가 하늘을 찌르고 있는듯 하다. 다음에 찾을때는 학교도 나도 좀 더 발전된 모습으로 만났으면 한다.

고객사 미팅

지난 금요일에는 컨설팅 사업본부의 요청으로 난생 처음 을의 입장이 되어 고객사 미팅에 참석했다. 연구원으로 10년 정도 생활한 후, 전문 컨설턴트가 되려는 계획을 가지고 있었기 때문에 나에게는 소중한 기회였다.

처음에는 질답시간에 기술적인 질문에 대한 대응을 위해 참석하기로 되어 있었는데, 얼떨결에 프리젠테이션까지 준비하게 되었다. 연구소 내에서 진행하는 팀미팅이나 집중회의(세미나)와 달리 고객들 앞에서 하는 발표인데다가, 우리팀이 개발한 프로그램의 강점과 약점을 10분이라는 짧은 시간 안에 전달해야 해서 발표자료를 만드는데 적잖이 신경을 썼다.

삼성역 글라스타워 본사에서 회사분들과 합류하여, 장교동에 있는 한화빌딩을 향하는 차안에서 오늘 발표를 주관하시는 컨설턴트 분과 의견을 조율하는 시간을 가졌다. 고객에게 어떻게 어필할 것인가를 의논하는 과정만으로도 충분히 긴장되는 것을 느낄 수 있었다.

우리측은 4명, 고객사측은 10명 정도 참석한 가운데 우리측 컨설턴트의 발표가 시작되었다. 차분히 논리적으로 진행하시는 모습을 유심히 관찰하면서 나의 차례를 기다렸다. 이미 고객들의 냉소적인(?) 반응이 표출된 상태에서 발표를 시작하게 되었는데, 난 그저 연구원의 입장에서 고객들이 알고 싶어 하는 부분을 명쾌하게 전달하는데 주력했다.

문제는 마지막 순서를 장식한 죄로 질답시간에 앞에 서서 내내 나와 관련 없는 질문을 받아 내야 했다는 것. 나의 의견을 가지고 답할 수 있는 질문도 있었지만, 회사의 생각과 나의 생각이 다를 수도 있기에 나는 대답하지 않았다. 미팅 시간 내내 나는 최대한 신중함을 기하기 위해 언행에 앞서 생각의 생각을 거듭하려고 노력했다.

고객을 만족시키는 것이 쉽지 않다는 것을, 넓게는 사회생활이라는게 만만치 않다는 것을 깨닫게 해준 시간이었다. 앞으로 연구소에서 제품을 개발함에 있어서도 이전과는 다른 마음가짐으로 일하게 될 것 같다.