shopkeeper/korean_wiki_content_only_120125 huggingface dataset:
5살 때부터 형 허봉의 벗인 손곡(蓀谷)에게 글을 배우기 시작하였으며 9세 때 이미 묘사를 잘하여 시를 잘 지을 줄 알았다. 12세 때 아버지를 잃고 외로움을 달래려 더욱 시문 공부에 전념하였다. 첫 스승인 이달은 둘째 형의 벗으로서 당시 원주의 손곡리(蓀谷里)에 살았는데 그에게 시의 묘체를 깨닫게 해주었으며, 인생관과 문학관에도 많은 영향을 주었다.
후에 이달에게 시와 글을 배우다가 매부 추연(秋淵)의 추천으로, 당대 대학자 류성룡의 문하에 들어가 성리학과 글을 배웠다.
그의 나이 17세 때인 1585년(선조 18년) 초시에 급제하고 안동 김씨 김대섭(金大涉)의 차녀와 혼인한다. 안동 김씨 부인의 친정어머니는 청송 심씨 심전(沈銓)의 딸로, 좌의정 심통원과 영의정 심연원의 종손녀이자 인순왕후, 심의겸의 6촌 여동생이다. 딸 1명이 태어났고 뒤에 진사 이사성에게 출가했다.
열다섯 살 때 그와 가까웠던 친형 허봉이 율곡 이이를 탄핵하다가 함경도 종성으로 유배됐고, 김성립(金誠立)에게 출가한 누이 난설헌은 시댁과 불화를 겪고 자식들은 잇달아 세상을 떠나서 눈물을 흘리면서 세월을 보내고 있었다. 허균이 스무 살 때인 1588년(선조 21년) 허봉은 끝내 서울 땅을 밟지 못하고 금강산에서 병사했다. 생전에 허봉은 허균에게 “온갖 일이 인간에게 있는 것이어서 높은 재주로도 영락(零落)하여 초망(草莽)을 떠도는구나”(‘아우에게 보냄’, 편지 「하곡집(荷谷集)」)을 보냈는데, 형 허봉은 곧 금강산에서 객사하고 만다.
21세 때인 1589년(선조 22) 3월 17일 증광과(增廣科) 생원시에 2등으로 급제하였다. 24세 때인 1592년(선조 25년) 임진왜란을 피하던 와중에 부인 안동 김씨가 단천에서 첫아들을 낳고 사망하고 어린 아들도 전란 중에 병사한다. 가족을 잃은 허균은 이후 집필에 몰두했는데 외가 애일당 뒷산의 이름을 따서 호 교산(蛟山)을 사용한다.
그 뒤 허균은 선산 김씨로 동인의 초대 당수인 김효원의 딸과 재혼한다. 김효원의 동생이자 후처의 숙부인 김이원은 북인의 중진이었다. 이때 그는 광해군을 수행했는데 그 공로로 후에 위성원종공신 2등에 책록된다.
김종직 비판과 주목.
종전 후 허균은 학문 연구와 과거를 준비하던 중 글 「김종직론」을 지어, 사림의 중시조로 추앙받던 김종직을 위선자라고 비판하였다. 이는 사회에 큰 충격을 주었다.
허균은 조의제문 따위를 지은 것은 가소롭다고 하고, 김종직을 가리켜 위학자(僞學者)라고 비난했다. 허균은 또한 김종직을 사기리절기명(私其利竊其名, 이익과 관록을 앉아서 차지했다)고 혹평하기도 했다. 김종직을 매우 예리하게 비판했기 때문에 김종직의 학통을 계승한 사림파에게 심하게 공격당하고, 당대와 이후 조선 멸망 전까지 나타난 온갖 인신공격과 비방의 원인이 된다. 그러나 허균은 이런 비방에 굴복하지 않고 자신의 소신을 당당하게 펼친다.
1592년 당시 임진왜란 당시 의병을 일으켜 싸운 공로로 훗날 선무원종공신 1등(宣武原從功臣一等)에 녹훈되었다. 그러나 그가 어느 전투에 출정한 공로로 선무원종공신 1등에 녹훈되었는지는 아직 밝혀지지 않았다.
1593년(선조 26년) 그의 나이 25세 때 한반도 최초 시평론집인 《학산초담》을 지었고 이듬해인 1594년(선조 27년)에는 정시문과(庭試文科)의 을과에 급제하였다. 승문원 사관(史官)으로 벼슬길에 오른 후 명(明) 사신을 접견하는 접반사(接伴使)로 파견된 심희수와 형 허봉에 이어 그해 4월 접반사로 명나라 사신을 수행하고 되돌아왔다. 그해 5월 다시 명나라 사신 접견에 파견된 원접사 수행원의 물망에 오르기도 했다.
바로 설서(說書)를 지냈고 얼마 뒤 정6품 예조좌랑으로 뛰어오르고 명나라에 다녀와 병조 실세인 병조좌랑(兵曹佐郞)으로 승진했다. 1597년 3월에는 문과 중시(重試)에 장원급제를 하여 종3품으로 승진하였다. 중시에 합격한 관료는 정3품 당상관으로의 승진(陞進)이 관례였으나 그에게는 인사 불이익이 가해져 종3품 직책이 부여된다.
1598년 황해도 도사(都事)로 부임하였다. 이때 한성부에 있던 그의 애첩인 기녀가 황해도 임지로 와서 그의 수발을 들었다. 그러나 한성부의 기생을 끌어들여 가까이하였다는 탄핵을 받고 여섯 달 만에 파직되었다. 뒤에 복직하여 춘추관기주관(春秋館記注官), 형조정랑 등을 지냈다. 1598년 10월 병조정랑이 되었다.
1599년 5월 다시 황해도 도사로 나갔다. 그러나 그해 12월 한성부의 기생을 데리고 간 일로 사헌부와 사간원에게 계속 탄핵받고 파직당하고 만다. 1600년 복직, 춘추관기주관(記注官)과 세자시강원의 낭관과 지제교(知製敎)를 거쳐 그해 말 장생전(長生殿) 낭청이 되어 의인왕후의 국장도감(國葬都監)과 빈전 행사에 참여하였다. 의인왕후의 국장에 참여한 공로로 1601년 5월, 특별히 가자(加資)되었다.
1601년(선조 34년) 충청·전라 지방의 세금을 걷는 전운판관으로 부임한다. 전운판관이 되었을 때는 부안의 유명한 시인이자 기생인 매창(梅窓)과 교류한다. 둘은 정신상 일에 중점을 두는 관계였다는 설과 매창이 그의 첩이었다는 설이 전한다. 후일 허균은 1609년(광해군 1년) 매창에게 쓴 편지에 “그대는 성성옹(惺惺翁)이 속세를 떠나겠다는 약속을 어겼다고 분명히 웃을 걸세”라고 쓴다. 매창에게 벼슬을 그만두고 은거하겠다는 약속을 한 사정을 알 수 있는데, 이런 약속은 자신의 생각이 그만큼 위험한 것임을 알았기 때문인지도 모른다. 그러나 허균은 이 약속은 끝내 지키지 못한다.
1601년 11월 형조정랑이 되어 내직으로 되돌아왔고 1602년초 병조정랑이 되었다. 그해 5월, 전에 세자시강원으로 있을 때 종1품 대신인 좌찬성 심희수를 시강원의 낭관인 그가 물러가라고 했다는 이유로 사헌부지평 윤경(尹絅)에게 탄핵받고 추고당했다.
탄핵과 파면, 복직.
이후 사복시정(司僕寺正)을 거쳐 1604년(선조 37년) 선무원종공신 1등(宣武原從功臣一等)에 녹훈되었다. 1604년(선조 37년) 7월에 성균관 전적(典籍)이 되고 같은 해 9월 수안군수(遂安郡守)가 되었다. 그러나 불교를 믿는다고 암행어사에게 다시 탄핵받아 벼슬에서 사퇴하였다.
1606년 4월에 원접사 유근(柳根)의 추천으로 명나라 사신 주지번(朱之蕃)을 영접하는 종사관에 임명되자 종사관으로 주지번을 만나 사서육경과 고전을 막힘없이 대화하며 글재주와 넓은 학식으로 이름을 떨치기도 했다. 이때 그동안 보관하던 누이 난설헌의 시선집을 명 사신으로 온 주지번에게 주어 그녀의 사후 18년 뒤에 중국에서 《난설헌집》이 출간된다. 1607년(선조 40년) 상의원정(尙衣院正)을 거쳐 그해 봄 삼척부사(三陟府使)로 나갔다.
1606년 명나라에 난설헌의 시가 출간되자 조선의 문화를 명나라에 알린 공로로 특별히 삼척부사가 된 것이었다. 그러나 재직 중 부청 근처의 법당에 출입하는 것이 누군가에게 목격되어 석 달이 못 되어 불상을 모시고 염불하고 참선한다는 이유로 1607년 5월 사간원과 사헌부에서 탄핵받았다. 그러나 선조는 듣지 않다가 사간원과 사헌부에서 탄핵이 계속되자 쫓겨났다.
그해 음력 5월 6일 숭불(崇佛)했다 하여 파직되었으나 얼마 뒤 종삼품 내자시정(內資寺正)으로 임명되었다. 1607년 7월 복직하여 내자시정(內資寺正)이 되고 그해 사복시정(司僕寺正)을 거쳐 12월 공주 목사로 부임하였으며, 《국조시산》을 편찬한다. 공주 목사로 기용되었을 때는 양반가의 서자 무리와 얼손(孽孫)들과도 호형호제하면서 가까이 터 놓고 지냈고 또다시 파직당한 뒤에는 부안으로 내려가 산천을 유람하며 기생 계생(桂生)을 만났고 천민 출신의 시인 유희경(柳希慶)과도 교분을 두터이 하였다.
1608년(선조 41년) 사신으로 명나라에 다녀왔다. 이때 누나인 난설헌(蘭雪軒)의 시를 명나라 문인, 작가들에게 보여주었는데 문인들은 난설헌의 작품성에 찬탄(讚嘆)하여 특별히 출간하고 인쇄하는 비용을 대주기도 하였다. 그해 광해군이 재위에 오르자 대북이 집권하면서 경연관(經筵官)이 되어 경연장에 들었다. 곧 첨지에 임명되었다. 1608년(광해군 즉위) 유영경의 옥사 직후 첨지로 정운원종공신 3등(定運功臣三等)에 책록되었다.
이듬해 1609년(광해군 1년) 행사직으로 익사원종공신 1등에 책록되었다. 그해 형조 참의(參議)가 되고 명나라에서 국왕 책봉사(冊封使)가 왔을 때 이상의(李尙毅)의 종사관이 되었다. 이해에 첨지중추부사(僉知中樞府事)가 되고 이어 형조참의가 되었다. 그해 명나라에 사절단의 수행원으로 베이징에 가서 천주교의 기도문을 얻어 왔다.
그런데 귀국 후 1610년 2월 명에 파견될 천추사로 다시 연경에 다녀왔다. 그해 4월 부호군에 제수된 뒤 명나라에 다시 갈 천추사에 임명되자 병을 핑계로 여러 번 상소를 올려 거절했다. 이 일로 탄핵당하고 부호군직에서 파직되었다. 이어 사헌부에서 여러 번 그를 탄핵하였으나 광해군이 이를 듣지 않았다.
1610년 10월 전시(殿試)의 대독관(對讀官)의 한 사람이 되어 과거 답안지를 채점하면서 자신의 조카와 조카사위를 합격시켰다는 혐의로 사헌부에서 탄핵당하였다. 그러나 왕이 듣지 않았으나 11월 내내 사헌부와 사간원에서 수십 차례 탄핵받고 42일간 의금부에 갇혀 지내다가 그해 12월 전라북도 익산군 함열(咸悅)로 유배됐는데 이때 허균이 죄를 뒤집어썼다는 여론도 있었다.
1610년(광해군 2년) 전라북도 익산군 함열에 유배됐고 유배지에 간 뒤에도 양사(兩司)를 비롯해서 재야 각처에서 그의 위리안치(圍籬安置) 등을 원하는 탄핵과 비난이 계속되었으나 그가 북인 당원인 탓에 무사하였다. 배소에서 그는 학동들을 데려다 가르치는 한편 글을 써서 1611년(광해군 3년) 문집 『성소부부고』 64권을 엮었고 1612년에는 한글소설 『홍길동전』을 저술한다. 『성소부부고』는 당대의 용사, 충신, 명사들에 대한 인물평이 담겨 있고 『홍길동전』은 조선 초 실존한 인물인 도적 홍길동을 동기(動機)로 하여 이상향을 표현하였다.
허균은 당시 『홍길동전』의 저자를 밝히지 않았으나 북인계 인사 유몽인이 『홍길동전』이 허균의 작품이라고 외부에 알리면서 그의 작품이라는 사실이 널리 알려지게 되었다. 1610년 5월에는 명나라의 주지번이 그에게 편지를 보냈는데 이 편지의 내용이 화제가 되어 조정에 들기도 했다. 1612년 『홍길동전』을 완성한 뒤 바로 석방되었으며, 그 뒤 몇 년간은 태인(泰仁)에 은거하였다. 1612년 12월 진주사(陳奏使)에 임명되어 명나라에 다녀왔다.
계축옥사와 역모 논란.
계축옥사 전후.
1613년(광해군 5년) 초 귀국하였다. 그러나 1613년 계축옥사 때 진술자 명단에 언급이 되어 화를 입을 뻔했으나 그는 명나라에 천추사로 다녀왔으므로 다행히도 피화(避禍)하였다. 박응서(朴應犀)·서양갑(徐羊甲)·심우영(沈友英) 등 명가 출신의 서자 7명이 여주 남한강변에 토굴을 파고 무륜당(無倫堂)이라 명명하고 강변칠우(江邊七友)라고 자칭하였다. 허균은 이들과 친하게 지냈지만 이들이 노상에서 강도 등의 행동을 하는 것을 알고 있었기에 가까이 하지는 않았다. 그러나 이들이 강도짓을 한다는 것을 관아(官衙)에 신고하지도 않았다. 이 중 박응서가 한 은상(銀商)을 살해했다가 체포되는데 북인 모사(謀士) 이이첨이 이를 영창대군의 외조부 김제남(金悌男)을 제거하려는 ‘계축옥사’(癸丑獄事)로 확대했다. 살인강도 사건이 역모로 확대된 것이다. 칠서의 변 관련자인 서자들인 박응서, 서양갑 등은 그와 평소 친분이 있었다. 그중에는 그의 처조부 심전의 서자인 심우영 형제도 있었다. 또한 허균의 형 허봉의 친구가 이달로 서자 출신이었던 점까지 의심의 대상이 되었다. 사건 이후 그는 동조하고 가담했다고 의심받았으나 극적으로 위기를 모면한다.
&lt;광해군일기&gt;를 보면, 연루(連累)된 김응벽이 “허균이 김제남의 집에 드나들며 날마다 상의했습니다”라고 자백했다고 전하는데 이덕일은 후일 '실제로 이 서자들과 친하게 지낸 허균이 큰 공포를 느낀 것은 당연했다.'고 봤다. 한편 7서로 지목된 서자들 중 심우영은 심전의 서자인데 심전의 딸이 그의 본부인(本夫人) 안동 김 씨의 친정어머니였다. 심우영은 그에게 서(庶) 처외삼촌뻘 되는 인물이었다. 작서의 고변으로 김제남과 서자들은 모두 사형됐지만 허균은 안전했는데 &lt;광해군일기&gt;를 보면, 사관은 이 사건의 불똥이 자신에게 튀는 것을 피하려고 이이첨에게 접근한 덕분이라 한다. 그러나 대북 계열에서는 그를 의심하는 눈초리로 보게 된다.
대북당에 입당.
계축옥사에서 평소 친교가 있던 서류 출신의 서양갑·심우영이 처형당하자 그는 본심을 숨기고 신변의 안전을 도모하려고 이이첨에게 아부하여 대북당(大北黨)에 참여하였다. 1613년 12월 예조참의가 되었다. 예조참의에 임명되자 바로 사간원이 '사람됨이 경박하여 본디 행신에 검속이 없고 이단을 숭봉해서 명교(名敎)에 죄를 졌다'며 파면하고 임용하지 말 것을 건의했지만 광해군은 이를 듣지 않고 허균을 신뢰하였다. 1614년(광해군 6년) 행사직(行司直)을 거쳐 호조참의가 되었다. 1614년 8월 27일 위성원종공신 2등(衛聖原從功臣二等)에 책록되었다.
1614년 12월 명나라에 파견되는 천추사(千秋使)의 한 사람으로 선발되어 중국 연경에 다녀왔으며, 천추사로 갔을 때 조선왕 이성계가 이인임의 아들로 기록된 원인이 된 기록을 입수하여 1615년 1월 조선으로 보냈다. 그 뒤로도 명나라의 각처와 고서점을 다니며 진귀한 책과 유교, 불교 경전을 입수하여 조정으로 보냈고, 광해군은 그의 능력을 칭송하였다. 1615년 2월에는 《학해(學海)》 《임거만록(林居漫錄)》을 조선으로 보내고, 이어 몇 권의 서적을 다시 조선으로 보냈다.
1615년 2월 귀국하였으며, 2월 중순 승문원 부제조가 되었다. 그해 5월 문신들을 상대로 한 정시 문과에서 인정전이란 주제로 시를 지었는데 수석을 차지하였다. 5월 승정원 동부승지가 되었다. 6월에는 전년도 천추사로 명나라에 갔을 때 서책(書冊)을 많이 들여온 공로와 종계 변무사(辨誣事)에 대한 자료와 정보를 입수해서 보냈고 또한 명나라 세종 황제(世宗皇帝)가 친히 지은 잠(箴)과 어필(御筆)을 구해온 공로를 인정받아 특별히 종2품으로 가자의 명이 내려졌다. 그해 6월 가선대부로 승진하였다.
1615년 8월 우승지, 좌승지 등을 지내고 그해 말 동지 겸 진주부사(冬至兼陳奏副使)로 다시 중국에 다녀왔다. 이 두 차례의 사행에서 그는 많은 베이징 체류 중 명나라 학자들과 시문으로 교류, 그의 수려한 문장력에 많은 명나라 문인들과 사귀게 됐다. 명나라 문인들과 사귀면서 그들을 통해 각종 서적을 입수, 귀국할 때 《태평광기 太平廣記》를 비롯하여 많은 책을 가지고 들어왔는데, 이 중에는 천주교 기도문과 지도가 섞여 있었다고 한다.
흉서 문제에 연루.
1616년(광해군 8년) 사직 제조(社稷提調)를 거쳐 자헌대부로 승진, 형조판서가 되고, 그해 역모로 몰린 인사들 중 유찬과의 관계가 문제가 되어 파직당했으나 곧 복직했다. 그해 10월 정헌대부로 승진했다. 1616년 말 진주사(陳奏使) 민형남(閔馨男)이 명나라에 파견될 때 진주부사로 연경에 가 공빈 김씨의 추숭을 건의하고 되돌아왔다. 이듬해 1617년에는 정2품 의정부좌참찬 겸 예조판서에 올랐다. 그러나 흉격 사건에 연루되어 길주에 유배됐다가 풀려났다.
1617년 2월 부사직(副司直)으로 강등당했고 흉격 사건에 연루되지 않았음을 해명한다. 그해 3월 아무 관련이 없음으로 드러나 문제는 종결된다. 그러나 그 뒤로도 계속 이런 저런 역모와 흉서 사건에 그의 이름이 오르내려 곤경에 처하게 된다.
인목대비 폐모론.
1617년(광해군 9년) 말부터 허균은 인목대비 폐출 논의에 적극적으로 앞장섰다. 인목대비 폐모론에 앞장 선 것은 후일 두고두고 논란거리를 제공한다. 후일 허균이 사형당한 후 그의 외손 이필진은 “인목대비를 폐하자는 의논에 끼어든 것은 본심이 아니었고 (그가) 간흉(奸凶, 이이첨)의 꾐에 빠진 것”이라고 그를 변호했지만, 허균은 남의 사주로 보기에는 지나칠 정도로 폐비 논의에 앞장섰다. 그해 11월 행 사직으로 폐모론에 적극 참여하였다. 심지어 깡패들을 모아 궁궐 뒷산에서 불온한 움직임을 보이기도 했는데, 정황상 인목대비 암살을 계획한 것 같다. 이 행동은 후에 허균 본인이 역모를 꾸몄다는 누명으로 부메랑이 되어 돌아온다.
그가 인목대비 폐모론에 적극 찬성하자 그를 좋게 보던 인사들도 그에게서 등을 돌리기 시작했다. 비교적 그에 대한 비판을 자제하던 기자헌조차 허균을 비난하였고, 그의 문인이자 기자헌의 아들인 기준격 역시 그에게 등을 돌렸다. 한편 신분제도와 서열 차별 등에 항거하기 위하여 서자와 불만계층을 규합하여 혁명을 계획하였으나 그의 거사 계획이 소문이 나면서 외부로 확산되었다. 이는 이이첨, 김개시 등이 칠서의 변에 연루된 서자들과 친분이 있던 허균을 의심하는 계기를 마련한다.
허균은 이이첨, 정인홍보다도 더 인목대비 폐모론에 앞장섰는데, 이 때문에 북인 내에서도 폐모에 반대하는 소북의 영수이자 영의정인 기자헌과 수시로 마찰을 빚었다. 이 일로 폐모를 반대하던 영의정 기자헌과 사이가 벌어지게 된다. 그런데 폐모에 반대한 기자헌이 귀양에 처해지고 길주로 유배되자, 그 아들 기준격은 허균이 배후조종한 것으로 의심, 부친을 구하기 위해 비밀상소를 올리고 “허균이 역모를 꾸몄다”고 주장하면서 파란이 일어난다. 바로 허균도 상소를 올려 자신은 아무 관련이 없음을 변명하였다.
탄핵과 사형.
1617년 12월 12일 의정부좌참찬이 되었다가 그해 12월 26일 우참찬이 되었다. 그러나 기준격 등은 계속 상소를 올려 그가 역모를 꾸민다고 공격한다. 1618년 1월 기준격은 계속 상소를 올려 그를 공격했고, 1618년 1월 좌참찬이 되고 그 역시 자신이 역모와 무관하다며 해명을 한다. 결국 그해 2월 우의정 한효순 등이 2품 이상의 대신들을 이끌고 허균과 기자헌을 추국하고 문제를 종결시킬 것을 청한다. 허균도 자신을 변호하는 맞상소를 올리는데 광해군은 웬일인지 진상을 조사하지 않고 묻어두었다. 그 와중에 허균은 이이첨과 관계가 멀어지게 된다. 이 무렵 이이첨의 외손녀인 세자빈이 아들을 낳지 못하자 허균의 딸이 양제(세자의 후궁)로 내정된 것이다. 허균의 딸은 소훈이 되어 입궐하였다. 허균에 대한 이이첨의 경계는 한층 강화되었고, 그를 제거하기로 기도한다.
1618년 기준격이 상소를 올려 허균이 왕의 신임을 얻은 것을 기화로 반란을 계획한다고 모함하고, 허균이 반대 상소를 올렸으나 허균에게는 계속 국문이 열렸고 그때마다 무수한 고문이 가해졌다. 결국 허균과 기준격을 대질 심문시킨 끝에 역적모의를 하였다고 응하게 되고, 그의 심복들과 함께 능지처참형을 당해 생을 마감한다.
벽서의 작성자가 허균이란 소문이 돌면서 광해군은 과거 기준격의 상소문을 국청에 내려 조사하게 했다. 자신의 최후를 예감한 허균은 8월16일 자신의 문집인 &lt;성소부부고&gt;를 딸의 집으로 옮겨 놓고 다음날 체포된다. 그는 도피하라는 지인들의 권고를 거절하고 자신의 저서와 작품들, 누나 허난설헌의 시문들을 모두 손수 장녀의 집에 옮겼다. 그는 사위 이사성(李士星)에게 나중에 아들에게 물려주어 간행하도록 할 것을 부탁했고, 당시 어린 외손자인 이필진에게도 나중에 자신의 문집을 꼭 간행해줄 것을 유언으로 남기기도 했다.
당시의 허균에 대한 평가는 총명하고 영발(英發)하여 능히 시를 아는 사람이라 하여 문장과 식견에 대한 칭찬을 아끼지 않았다. 그러나 그 사람됨에 대하여서는 경박하다거나 인륜도덕을 어지럽히고 이단을 좋아하여 행실을 더럽혔다는 등 부정적 평가를 내리고 있다. 그해 8월 16일 체포되어 의금부로 압송된 뒤 국문을 받고 8월 24일 한성부에서 거열형을 받았다. 시집간 두 딸은 연좌되지 않았고 그의 아들들은 연좌되어 처형당한다. 그러나 다른 아들들은 하인들의 도움으로 조령 근처로 숨었다가 경상북도 영천과 울산에 숨어 살았다. 이때 그의 나이 향년 49세였다.
그가 체포되자 그와 관련된 인물이 대부분 체포되었고 사위 이사성 역시 체포되어 국문을 당했으나 그를 별로 좋아하지 않아 친하게 지내지 않았음을 들어 극적으로 화를 모면하였다. 그의 조카인 허채, 허보, 허신 등도 의금부로 잡혀가 국문을 당했지만 허균과 친하게 지내지 않았음을 들어 화를 모면하였다. 그가 처형된 직후에도 계속 그와 관련된 인물들이 의금부와 포도청에 불려다니며 공초를 당했다.
그의 사후 연좌제가 적용되어 강릉에 있는 아버지 허엽의 묘소도 부관참시의 대상이 되었다고 한다. 이후 비 오는 날이면 허균의 선영에는 울부짖음소리가 나, 어느 선비가 없는 자식으로 생각하라는 내용의 위령제를 지낸 뒤 울음소리가 그쳤다 한다. 허균 사후 그의 후손들은 끊긴 것으로 알려져왔으나, 그의 후손들 중 일부는 파가 다른 타 문중(허목 봉례공파)에 양자로 가거나 타인의 후손인 것처럼 변성명을 하고 후손을 이어왔다. 그러다가 1980년대에 허균의 살아남은 아들(허굉)의 직계 자손들이 가첩을 통해 허균의 직계 후손임을 주장하여 오다가, 1995년 양천허씨 허추자산공파 세보에 판도좌랑공 11세손(균)파 교산공파로 숨겨진 혈통을 이어가게 되었다.
그의 작품인 홍길동전은 인조 반정 직전 유몽인 등이 자신들의 문집과 서신 등에 홍길동전의 저자가 허균이라는 기록을 남김으로써 후대에 홍길동전의 저자임이 알려지게 되었다. 허균의 문집과 성소부부고 등은 1668년 외손자 이필진이 간행하여 서서히 알려지게 되었다.
1623년(인조 1년) 인조 반정 이후에도 그가 북인과 대북당원이었던 탓에 복권되지 못하였다. 정조 때와 고종 때 그에 대한 복권 여론이 나타났으나 노론의 강한 반대로 무산되었고, 그는 대한제국이 멸망할 때까지 복권되지 못한다. 1910년(융희 4년) 대한제국 멸망 이후 그의 저서 홍길동전과 그의 사상에 대한 연구가 시작되었다.
학문 편력, 사상.
그는 적서차별의 부당함과 부패관료를 규탄하는 글을 여러 편 남겨 사회비판적인 의식을 보여주었다. 그는 학론(學論)·정론(政論)·유재론(遺才論)·호민론(豪民論)의 논설을 통해 당시 정부와 사회의 모순을 비판하고 개혁방안을 제시했다. 내정개혁을 주장한 그의 이론은 원시유교사상에 바탕을 둔 것으로 백성들의 복리증진을 정치의 최종목표로 삼아야 한다는 것이다.
인재 등용론.
그는 적자와 서자 모두에게 공평하고 균등한 기회를 부여해야 된다고 생각하였다. 이는 스승 손곡 이달이 서자로서 출세하지 못한 것이 이유라고도 하고, 허균 자신이 재취부인의 소생으로 서자들과 다를바 없는 불우한 처지라서 이에 공감했다는 설도 있다.
유교 사상에 얽매이지 않은 사상적 편력은 당대에도 회자화되었다. 허균은 유교집안에서 태어나 유학을 공부한 유가로서 학문의 기본을 유학에 두고 있으나 당시의 이단으로 지목되던 불교, 도교와 노장사상에 대하여 사상적으로 깊이 빠져들었다. 그는 이러한 사상에 관심을 갖는 것이 아니라 빠질뻔 했다고도 고백하였고, 유교 이외의 사상에서도 정답을 찾을 수 있다고 주장하였다. 특히, 불교에 대해서는 한때 출가하여 중이 되려는 생각도 있었으며 불교의 오묘한 진리를 접하지 않았더라면 한평생을 헛되이 보낼 뻔하였다는 고백을 하기도 하였다. 불교를 믿는다는 사헌부의 탄핵을 받아 파직당하고서도 불교에 호감, 흥미를 갖는다는 자기의 신념에는 아무런 흔들림이 없음을 시와 편지글 등을 통해 일부 밝혔다.
도교사상에 대해서는 주로 그 양생술과 신선사상에 깊은 관심을 보였으며, 은둔사상에도 지극한 동경을 나타내었다. 은둔생활의 방법에 대하여 쓴 〈한정록(閑情錄)〉등을 통해 은둔의 실천과 방법에 대하여 논하였다. 허균 자신이 서학(西學)에 대하여 언급한 것은 없으나 몇몇 기록에 의하면, 허균이 중국에 가서 천주교의 기도문을 가지고 온 것을 계기로 하늘을 섬기는 학을 하였으니, 이는 곧 그가 새로운 문물과 서학의 이론에 남다른 관심을 보였음을 입증한다. 일각에서는 그를 조선인 최초의 천주교인으로 보기도 한다.
죽음에 대한 의문점.
그의 처형을 두고 당시 조정의 권신이었던 유희분이 죄인에 대한 면밀한 심문 없이 자백 직후 형을 집행했다 하여 의문을 제기하면서 작은 소동이 일었다. 이를 두고 허균의 처형을 강력히 주장했던 또 다른 권신 이이첨이 처형의 정당성과 허균의 역모 혐의를 강조하면서 이 논란은 가라앉았으나, 허균이 능지처참되던 날 형장에서 죄안에 서명하기를 거부하였다는 증언이 있어 의문의 여지를 남겨두고 있다.
음식 평론.
허균은 한국 최초의 음식 평론서도 남겼다. 그가 쓴 우리나라 최초의 음식 품평서 '도문대작'에 관한 내용으로 꾸며진다. 이 책에는 허균이 40 평생 먹어본 조선 최고의 맛이 기록돼 있다.
3일 동안 입에서 향이 가시지 않는다는 강릉의 방풍죽, 회 한 젓가락에 돌아갈 곳을 잊게 한다는 한강의 숭어와 웅어 등 177가지 별미에 대한 평가가 들어있다. 제작진은 "이 책에 등장하는 특산물 중에는 현재 사라졌거나 식재료로 이용되지 않는 것들도 많다"며 "조선 중기 우리 음식 문화의 실상을 알려주는 귀중한 자료"라고 말했다.
유몽인은 그가 "역적 허균은 총명하고 재기가 뛰어났다. 고 평가했다. 그가 지은 소설 《홍길동전》은 사회제도의 모순을 비판한 작품으로 알려져 있다. 또한 허균이 진보적인 종교인이어서, 천시 받던 불교는 물론 천주교회까지 신봉하였다는 평가도 있다. 한편 기인이었다는 비판도 있다.
문집에 실려 있는 그의 한시는 많지는 않지만 국내외로부터 품격이 높고 시어가 정교하다는 평을 받는다. 시화(詩話)에 실려 있는 그의 문학비평은 당대에는 물론 현재에도 문학에 대한 안목을 인정받고 있다.
사람됨에 대하여서는 경박하다거나 인륜도덕을 어지럽히고 이단을 좋아하여 행실을 더럽혔다는 등 부정적 평가를 내리고 있다. 그의 생애를 통해볼 때 몇 차례에 걸친 파직의 이유가 대개 그러한 부정적 견해를 대변해주고 있다.
허균의 사회비판적인 의식과 억불숭유사회에서의 불교 숭상, 격에 얽매이지 않는 행동 등으로 인조반정 뒤에도 복권되지 않았다. 홍길동전이 허균의 작품이라고 알려진 것도 조선 말기 갑오경장 이후부터였다.
허균이 처형당할 당시 이미 출가한 두 딸은 연좌되지 않았다. 그밖에 이복 형 허성과 친형 허봉의 아들들 역시 연좌되지 않는다. 동인의 초대 당수인 성암 김효원과는 이중 인척이 된다. 김효원은 그의 후처의 친정아버지인데 그의 형 허성의 딸이 김효원의 아들 김극건의 부인이 된다. 김효원의 아들 김극건은 그와 처남 매부간이면서 조카사위-처삼촌간인 이중 인척관계를 형성한다.
그의 아들들은 처형당했고, 허굉 등 일부만이 기적적으로 숨어서 후사를 이었다. 또한 이사성에게 시집간 큰딸, 광해군의 세자인 폐세자 이질의 후궁인 소훈으로 책봉된 딸, 의창군에게 시집간 이복형 허성의 딸은 화를 면하였다.
허균의 이복형인 허성의 사위가 선조와 인빈 김씨 소생의 의창군(義昌君)이다. 인조는 의창군의 형 정원군의 장남이다.
허비의 차남 허훈(許薰)의 손자가 허자이고, 허목은 5대손이다. 허비의 3남 허지(許芝)의 손자 허론의 서자는 동의보감의 저자 허준이다. 허비의 넷째 아들 허형의 증손이 허잠이고, 5대손이 허적이다.
사암(砂岩, sandstone)은 지름이 0.064~2mm인 모래 크기의 입자들이 쌓여 고화(固化)된 암석이다. 셰일 다음으로 흔한 퇴적암이다. 석영이 고결(固結; 엉겨 굳어짐)되어 생기는 사암이 대부분이지만, 장석이 대다수를 차지하는 경우도 있다. 장석질 사암은 아코즈(Arkose)라고 한다.
사암의 광물조성.
사암은 주로 석영, 장석 등의 광물로 구성된다. 석영은 쇄설성 퇴적암에서 가장 많이 나타나며 사암에는 평균 65% 정도 함유되어 있다.
석영.
사암의 석영은 주로 화강암, 편마암, 편암 등 결정질 암석에서 유래하며 산소와 규소의 강한 결합에 의해 모스 굳기계 7로 단단하여 여러 번의 암석 윤회에서도 살아남는다. 석영 입자의 형태를 관찰하면 그 기원암을 알 수 있으며 퇴적암에서 기원한 석영의 경우 과성장(過成長, Overgrowth)한 모습을 보인다.
장석.
사암의 장석은 칼륨을 함유하는 칼륨장석(K-장석), 나트륨과 칼슘을 함유하는 사장석, 칼륨장석과 사장석을 함유하는 퍼사이트(perthite) 3종류로 구분된다. 장석은 풍화에 비교적 약해 사암에 장석의 양이 적으면 심한 풍화작용을 받았거나 운반 과정에서 제거된 것으로 추정할 수 있다. 칼륨장석은 정장석, 미사장석, 새니딘(Sanidine)으로, 사장석은 조장석(Albite, 알바이트), 올리고클레이스(), 안데신(), 래브라도라이트(labradorite), 바이토우나이트(), 회장석(anorthite, 아노사이트)으로 구분된다.
흔히 나타나는 장석의 변질 작용은 다음과 같다.
국내 사례.
강원특별자치도 정선군 화암면 몰운리의 정선 소금강은 조선 누층군 장산 규암층으로 구성되며, 이곳의 장산층 사암(규암)은 석영으로만 구성되어 풍화에 강해 절벽을 형성하고 있다. 삼척탄전 지역의 평안 누층군 만항층과 영월탄전 지역의 평안 누층군 요봉층 사암에는 장석이 거의 없는데 이는 사암의 기원암에 장석이 거의 없었고 이에 작용한 화학적 풍화작용 때문에 만항층이 퇴적되기 전에 장석이 이미 없었던 것으로 해석된다.
한국의 사암.
조선 누층군.
조선 누층군 장산층과 동점층이 사암 및 사암이 변성된 규암으로 구성된다.
평안 누층군.
평안 누층군 만항층, 요봉층, 금천층, 장성층, 함백산층은 일부 혹은 대부분이 사암으로 구성된다. 특히 함백산층은 평안 누층군의 대표적인 사암 지층으로 강원특별자치도 강릉시의 정동심곡바다부채길에서 사암의 노두를 자세히 관찰할 수 있다.
경상 누층군.
경상 누층군 낙동층, 하산동층, 진주층, 일직층, 후평동층, 점곡층, 사곡층, 춘산층, 칠곡층, 함안층, 반야월층, 대구층, 진동층, 동화치층, 가송동층, 도계동층 등 대부분의 지층에 사암이 포함되어 있다.
현월(玄月, 1965년 2월 10일~)은 대한민국의 소설가이다. 재일 한국인으로 본명은 현봉호(玄峰豪)이다.
다양한 직업을 경험한 후, 오사카 문학 학교에서 동시집 "백아"(白鴉)를 발행하면서 집필 활동을 시작했다. 1998년 "무대 배우의 고독"(舞台役者の孤独)이 문학계에서 게재되어 작가로 데뷔했다.
브로스노 호는 트베리 주에 위치한 호수로 안드레아폴에서 가깝다. 이곳은 네스호처럼 브로스노 호의 용이 산다고 전해진다. 이 호수의 깊이는 43 m이고, 서쪽 지역에 교회가 있었으나 침수되었다. 이곳은 이상하게도, 2종류의 바닷물고기가 서식한다.
브로스노 호의 용, 또는 브로스냐는 브로스노호에 산다고 전해지는 괴물로 트베리주의 브로스노 호에서 목격된다. 대부분의 사람들은 이 괴물이 네시와 유사한 생명체라고 말한다. 이 괴물이 살고 있는 최고 깊이의 호수는 43m이고 소나로 발견되었다.
브로스노 호에 살고 있는 이 이상하고 거대한 생명체에 대한 소문이 이미 몇세기 동안에 존재해왔다. 한가지 전설에 의하면 13세기에 노브고로드를 치러 가려고 하던 타타르-몽골 군대에게 이 괴물이 목격되었다고 전해진다. 바투 칸도 브로스노 호의 옆에서 쉬던 도중에 이 괴물을 목격했다. 기병부대가 이 호수에서 말에게 물을 먹이려고 하는 순간, 말에서 기병들이 떨어지고, 군인들과 말들이 물에서 나온 거대한 형상을 보고 겁에 질렸다. 바투 칸은 이 괴물 때문에 노브고로드로 진격을 못하고 결국 노브고로드는 몽골군의 공격을 피했다. 어부가 괴물이 거대한 입으로 어떤 것을 게걸스럽게 먹는 것을 보았다고 하는 전설도 전해진다. 연대기에서는 호수 수면 위에서 나온 이 괴물의 모습이 때때로 "모래 산"과 같다고 기록되었다. 이전에, 어떤 바랑기아인(스웨덴의 직업 군인)들이 값진 물건을 훔치고 이 호수로 온 뒤에 이곳에서 숨었다. 그러나 작은 섬으로 이들이 가려고 할 때에, 이 용이 호수에서 갑자기 튀어나왔고 작은 섬에서 이들을 잡아먹었다.
이 끔찍한 괴물은 18세기 - 19세기에 사람들의 마음을 두렵게 만들었다. 아침에 호수 수면에 나타난 거대한 생명체에 관한 소문은, 사람들이 접근할 때에 이 괴물이 물 속으로 숨었다.
컴포넌트 오브젝트 모델()은 마이크로소프트가 개발한 소프트웨어 구성 요소들의 응용 프로그램 이진 인터페이스 표준이다. 마이크로소프트가 1993년에 소개하였다. COM을 이용해 개발된 프로그램들은 프로세스간 통신과 동적 오브젝트 생성이 가능하다. 소프트웨어 개발에서는 COM이라는 용어를 종종 OLE, OLE 자동화, ActiveX, COM+, DCOM 기술을 포함하는 포괄적 개념으로 사용한다. COM이 소개된 건 1993년이지만, 마이크로소프트는 1997년이 되어서야 COM이라는 이름을 강조하기 시작했다.
다양한 플랫폼에서 COM이 구현되었지만, 주로 마이크로소프트 윈도우에서 사용된다. COM은 닷넷 프레임워크와 같은 다른 기술로 대체되리라 전망된다.
COM 인터페이스를 만드는 데 관여한 매우 주목할 만한 인물의 하나인 앤서니 윌리엄스(Anthony Williams)는 소프트웨어 컴포넌트 개념들을 포함하고 있는 내부 문서인 〈오브젝트 설계: Unknown 다루기(Object Architecture: Dealing With the Unknown)〉 (또는 〈동적 확장이 가능한 클래스에서의 형식 안전성(Type Safety in a Dynamically Extensible Class)〉)를 1988년에, 〈상속: 상속은 무엇을 의미하며 어떻게 사용하는가(On Inheritance: What It Means and How To Use It)〉를 1990년에 각각 마이크로소프트에 발표하였다. 이 문서들은 COM의 기본을 이루는 데 사용됐던 많은 아이디어들에 대한 토대를 제공하였다.
이러한 많은 아이디어들로부터 1990년 마이크로소프트의 첫 번째 오브젝트 기반 프레임워크인 OLE(Object Linking and Embedding)이 탄생되었다. OLE는 동적 데이터 교환(DDE) 위에 구축되었으며, 특히 복합 문서(Compound Document)를 위해 디자인되었다. OLE는 1991년 워드와 엑셀을 통해 소개되었고, 이후 1992년 윈도 버전 3.1부터 운영 체제에 포함되었다. 복합 문서의 예로는 워드 문서에 포함된 스프레드시트를 들 수 있는데, 이 경우 엑셀에서 스프레드시트를 변경하면 해당 변경사항은 워드 문서 안에 자동으로 반영된다.
1991년 마이크로소프트는 비주얼 베이직 1.0을 통해 비주얼 베이직 확장(Visual Basic Extensions 또는 VBX)를 소개하였다.
1993년 마이크로소프트는 OLE 2와 OLE 2 오브젝트 모델의 기초가 되는 COM을 발표하였다. OLE 1이 주로 복합 문서에 초점을 맞췄다면, COM과 OLE 2는 일반화된 소프트웨어 컴포넌트에 초점을 맞춰 디자인되었다. 1994년에는 VBX 컨트롤의 후속 버전인 OLE 컨트롤(OCX)가 소개되었다. 이 시기 마이크로소프트는 OLE 2를 단지 "OLE"로 지칭하면서, OLE가 더 이상 약어가 아닌 모든 회사의 컴포넌트 기술에 사용될 수 있는 하나의 이름이라고 명시하였다.
1996년 초 마이크로소프트는 인터넷 관련 OLE의 일부를 ActiveX로 이름을 바꿨고, 마이크로소프트 오피스에 사용되는 복합 문서 기술을 제외한 모든 OLE 기술들을 ActiveX로 차츰 이름을 바꿔나갔다. 이듬해 마이크로소프트는 CORBA에 대한 대응으로 DCOM을 소개하였다.
COM+는 COM의 중요한 확장으로서 윈도우 2000을 통해 소개되었다. 동시에 마이크로소프트는 DCOM을 별개의 다른 기술로서 강조하지 않았다. 트랜잭션적인 COM 컴포넌트들은 이전 윈도 NT4 환경에서는 마이크로소프트 트랜잭션 서버 애플리케이션 인터페이스를 통해 배치되었지만, 현재는 COM+의 추가된 레이어에서 직접 다루어진다. COM+ 컴포넌트들은 현재 컴포넌트 서비스 애플리케이션 인터페이스를 통해 추가된다.
COM+의 이점 중 하나는 컴포넌트 팜(farm)에서 실행될 수 있다는 점이다. 제대로 작성된 컴포넌트는 한 번 메모리에 올려지면 초기화 루틴을 다시 호출하는 것만으로도 재사용될 수 있다. 컴포넌트는 또한 분산될 수 있는데(즉 다른 기계에서 호출될 수 있는데), 이는 이전에는 DCOM에서만 가능했었다.
COM 플랫폼은 닷넷 프레임워크에 많은 지위를 빼앗겼다. 그리고 현재 마이크로소프트는 .NET의 마케팅에 중점을 맞추고 있다. .NET의 입장에서 현재 COM은 어느 정도까지는 사용을 피해야 하는 기술이 되었다. 그럼에도 불구하고 COM은 COM을 기반으로 한 인기있는 3D 렌더링 SDK인 다이렉트X 같은 중요한 소프트웨어 기술로 인해 여전히 필수적인 기술로 남아 있다. 또한 COM 컴포넌트는 동일한 기능을 하는 관리되는 .NET 컴포넌트보다 이론적으로 항상 더 좋은 성능을 갖는다. 2013년 현재 마이크로소프트가 COM 또는 COM의 지원을 중단할 계획은 알려진 바가 없다.
COM과 .NET 사이에는 제한된 상호 호환성이 제공된다. COM 오브젝트는 런타임 호출 가능 래퍼(runtime callable wrapper; RCW)의 구현을 통해 .NET에서 사용될 수 있다. COM 호환을 위한 인터페이스 제약을 따르는 .NET 오브젝트는 COM 호출 가능 래퍼(COM callable wrapper; CCW)를 통해 COM 오브젝트에서 사용될 수 있다. COM 및 .NET에서 상대 기술로 제작된 오브젝트들은 일반적인 오브젝트처럼 보이게 된다.
인터넷 보안.
액티브X 컨트롤과 같은 COM 기반 프로그램을 액티브 콘텐츠로서 웹페이지에 포함한다는 마이크로소프트의 아이디어는 인터넷 익스플로러에서 컴퓨터 바이러스, 트로이 목마, 스파이웨어 감염을 급증시킬 수 있는 등의 많은 문제를 발생시켰다. 이러한 악성 소프트웨어 공격은 대부분 액티브X를 통해 활성화된 후 다른 컴퓨터로 전파된다. 마이크로소프트는 1996년에 ActiveX에 대한 문제를 인지하였다.
액티브X 컨트롤과 같은 COM 기반 프로그램들은 네이티브 코드로 실행되기 때문에 코드 실행에 대한 제약이 적다. 많은 이런 문제들로 인하여 자바 및 그 이후의 닷넷과 같은 소프트웨어 프레임워크들이 개발되면서 COM은 상대적으로 기피대상이 되었다.
기술 세부 사항.
COM 프로그래머는 COM 컴포넌트들을 사용하여 소프트웨어를 개발한다. 각각의 COM 컴포넌트들은 클래스 아이디(CLSIDs)로 식별하는데, 클래스 아이디는 전역 고유 식별자(GUID) 형식으로 되어 있다. COM 컴포넌트의 기능은 하나 이상의 인터페이스를 통해 노출된다. 컴포넌트에서 지원하는 인터페이스들은 인터페이스 아이디(IIDs)로 식별하는데, 이것 역시 GUID이다.
COM 인터페이스는 C, C++, 비주얼 베이직과 같은 프로그래밍 언어 및 윈도 플랫폼에서 구현된 여러 종류의 스크립트 언어와 바인딩된다. 컴포넌트에 대한 접근은 모두 인터페이스의 메서드를 통해 이루어지는데, 이를 통해 프로세스간(inter-process) 또는 심지어 컴퓨터간(inter-computer) 프로그래밍(후자는 DCOM을 사용한다.) 같은 기법이 허용된다.
모든 COM 컴포넌트는 표준 IUnknown 인터페이스를 구현한다. 실제 모든 COM 인터페이스는 IUnknown 인터페이스로부터 상속된다. IUnknown 인터페이스는 AddRef(), Release(), QueryInterface() 이렇게 3개의 메서드로 이루어진다.
COM 컴포넌트의 인터페이스는 반사적(reflexive)이며, 대칭적(symmetric)이고, 추이적(transitive)인 특성을 보여야 한다.
인터페이스는 가상 메소드 테이블에 대한 포인터로 구성된다. 가상 함수 테이블은 인터페이스가 정의하는 함수 선언을 실제로 구현하고 있는 함수들에 대한 포인터의 리스트를 포함하며, 인터페이스에 선언된 함수의 순서와 동일한 순서대로 함수 포인터를 저장한다. 이러한 함수 포인터의 구조체를 전달하는 기법은 OLE 1.0이 자신의 시스템 라이브러리와 통신하기 위해 사용한 방법과 매우 유사하다.
COM은 컴포넌트끼리 서로 통신이 가능하도록 많은 다른 표준 인터페이스를 정의하고 있다. 예를 들어 IStream 인터페이스는 데이터 스트림을 나타내는 컴포넌트로 말미암아 노출된다. (파일을 읽고 쓰기 위한 FileStream 컴포넌트가 한 예이다.) 이런 컴포넌트는 스트림 읽기 및 쓰기를 할 수 있는 Read와 Write 메서드를 갖는다. 다른 표준 인터페이스인 IOleObject는 컨테이너에 연결되거나 포함되는 컴포넌트로 말미암아 노출된다. IOleObject는 호출자가 컴포넌트의 테두리 사각형 크기를 결정할 수 있게 하거나 컴포넌트가 'Open', 'Save' 같은 동작을 지원하는지 여부를 확인할 수 있게 하는 등의 기능을 지원하는 메서드를 포함하고 있다.
COM에서 클래스는 coclass라고 불린다.
coclass는 하나 이상의 인터페이스를 구체적으로 구현한 것이다. coclass는 COM 컴포넌트 개발을 지원하는 모든 언어(예를 들어 C++나 비주얼 베이직 등)로 작성할 수 있다.
윈도 개발에 대해 COM이 한 주요 기여 중 하나는 인터페이스를 구현으로부터 분리한다는 개념을 도입했다는 점이다. COM에서는 객체를 인터페이스를 통하지 않고 직접 접근할 수 없기 때문에 반드시 인터페이스와 구현이 분리되어야 한다. 이와 함께 COM은 단일 인터페이스 다중 구현을 지원한다. 단일 인터페이스 다중 구현 개념은 애플리케이션이 실행 중에 인터페이스에 대한 여러 구현 중 하나를 선택하여 인터페이스를 인스턴스화 할 수 있다는 것을 의미한다.
타입 라이브러리는 COM 타입들을 설명하는 메타데이터를 포함한다. 이러한 COM 타입들에 대한 설명은 인터페이스 정의 언어(Interface Definition Language, IDL)를 통해 작성되며 컴파일 될 수 있도록 텍스트 파일로 저장된다.
COM 컴포넌트 개발에서 IDL을 사용하여 먼저 타입들을 정의하면서 시작하는 건 흔히 있는 일이다. IDL 파일은 개발자가 어떠한 프로그래밍 언어와도 관련되지 않는 방법으로 객체 지향적인 클래스, 인터페이스, 구조체, 열거형 및 다른 사용자 정의 타입들을 정의할 수 있도록 해준다.
IDL 파일은 MIDL 컴파일러에서 타입 라이브러리(.TLB 파일)로 컴파일된다. 이러한 타입 라이브러리에 저장된 바이너리 메타데이터는 VB, VC++, 델파이 등과 같은 다양한 프로그래밍 언어로 처리하게 된다. 이와 같은 처리의 결과로 각각의 언어 컴파일러는 자신의 언어에 맞는 형식(VB를 위한 VB 클래스, VC++를 위한 클래스, 구조체, 매크로 및 typedef 등)을 만들게 되고, 이런 형식들은 .TLB 파일(궁극적으로는 원래 정의된 IDL 파일)에 정의된 coclass를 나타내게 된다.
COM의 기반이 되는 개념들은 객체 지향성에 그 뿌리를 두고 있다. COM은 프로그램을 객체 지향적으로 개발하고 배치하기 위한 인터페이스이다.
COM은 런타임 프레임워크이기 때문에 실행 중에 타입들을 개별적으로 식별하거나 지정할 수 있다. 이를 위해 전역 고유 식별자(GUID)가 사용된다. 각각의 COM 타입에는 실행 시 식별 될 수 있도록 GUID가 할당된다.
COM 타입에 대한 정보를 컴파일시 및 실행시에 접근할 수 있게 하기 위해, COM은 타입 라이브러리를 소개하고 있다. 타입 라이브러리의 효과적인 사용을 통해 COM은 오브젝트 사이의 상호 동작을 지원하는 동적 프레임워크로서의 기능을 수행한다.
IDL에서의 다음과 같은 coclass 정의 예제를 살펴 보자 :
위의 코드는 MyObject라는 이름의 COM 클래스를 선언하고 있다. 이 클래스는 IMyObject라는 이름의 인터페이스를 구현하며, _IMyObjectEvents 이름의 이벤트 인터페이스를 지원한다.
class CSomeObject : public ISomeInterface
위의 코드에서 ISomeInterface는 C++ 가상 클래스이다.
COM coclass가 구현되고 시스템에서 사용할 수 있게 되었다면, 이제 이를 어떻게 인스턴스화 할 지의 문제가 뒤따르게 된다. 현재 C++ 같은 언어에서는, CoCreateInstance() API를 인스턴스화 할 coclass의 CLSID (CLSID_MyObject)와 해당 coclass에서 사용하려는 인터페이스 IID (IID_IMyObject)를 지정하여 사용할 수 있다. CoCreateInstance()를 호출하는 다음과 같은 코드는 :
CoCreateInstance
CLSID_MyObject,
NULL,
CLSCTX_INPROC_SERVER,
IID_IMyObject,
(void**)&amp;m_pIMyObject
ISomeInterface* pISomeInterface = NULL;
pISomeInterface = new CSomeObject();
첫 번째 경우는 COM 서브 시스템에게 IMyObject 인터페이스를 구현하는 오브젝트에 대한 포인터를 얻어오되 이 인터페이스를 구현하는 CLSID_MyObject 구현을 통해 얻어오고 있다. 두 번째 경우는 ISomeInterface 인터페이스를 구현하는 C++ 클래스의 인스턴스를 CSomeObject 클래스를 통해 생성하고 있다.
이 두개가 (개념적으로) 같다는 것은 명확하다. coclass는 COM 세계에서의 객체 지향적 클래스이다. coclass의 주요 특징은 (1) 원래부터 바이너리 규약이고, 따라서 결과적으로 (2) 프로그래밍 언어에 독립적이다.
레지스트리.
윈도에서 COM 클래스, 인터페이스, 타입 라이브러리들은 GUID로써 리스트되어 레지스트리에 저장된다. COM 라이브러리는 레지스트리를 사용하여 COM 오브젝트들의 로컬 라이브러리를 찾거나 원격 서비스의 네트워크 위치를 찾는다.
참조 카운팅.
COM 규약은 참조 카운팅(reference counting)이라는 기법을 필요로 한다. 이 기법은 COM 오브젝트가 노출하는 인터페이스를 하나 이상의 클라이언트가 사용하고 있다면 오브젝트가 해제되지 않게 한다. 바꿔 말하면 COM 오브젝트는 자신의 인터페이스를 사용 중인 모든 클라이언트가 인터페이스 사용을 끝마쳤을 때 해제된다. COM 오브젝트는 자신의 참조 카운트가 0이 될 때 자신이 현재 사용 중인 모든 메모리를 해제해야 할 책임이 있다는 점에 주의하자.
COM의 가장 기반이 되는 인터페이스인 (그래서 모든 COM 인터페이스가 반드시 상속해야 하는) IUnknown 인터페이스는 AddRef()와 Release() 이렇게 두 개의 메서드를 통해 참조 카운팅의 개념을 지원한다. 참조 카운트는 COM 오브젝트의 참조 카운트를 말하는 것이며 COM 인터페이스가 참조 카운팅 되지 않는다는 점에 주의하자.
COM 오브젝트는 참조 카운팅을 위해 내부적으로 하나의 정수형 값을 사용한다. 이 값은 IUnknown 또는 이를 상속한 다른 COM 인터페이스를 통해 AddRef()를 호출하면 증가한다. 이 값은 Release()를 호출하면 감소한다. AddRef()와 Release()는 클라이언트가 COM 객체의 수명에 관여하는 유일한 방법이다. 이 정수값은 COM 오브젝트의 private 멤버이며 직접 접근할 수 있게 되는 경우는 없다.
AddRef()의 목적은 COM 오브젝트에게 자신에 대한 추가적인 참조가 만들어졌음을 알려주는 것이다. 따라서 이 참조가 여전히 유효하다면 COM 오브젝트는 해제되지 않고 유지되어야 한다. 반대로 Release()의 목적은 COM 오브젝트에게 클라이언트가 더 이상 자신을 필요로 하지 않음을 알려주는 것이다. 이를 통해 만약 참조 카운트가 0이 되었다면, COM 오브젝트는 해제되게 된다.
어떤 프로그래밍 언어는 (예를 들어 비주얼 베이직) 참조 카운팅을 자동으로 지원하여 COM 오브젝트 개발자가 소스 코드에 참조 카운팅 관련 코드를 직접 작성하지 않아도 되게 한다. C++와 같은 저 수준의 프로그래밍 언어는 정수형 멤버를 선언하는 등 소스 코드에 직접 참조 카운팅 관련 코드를 작성해 주는 것이 필요하다.
참조 카운팅의 원리는 단순하지만 COM 개발자들 특히 신입 COM 개발자들은 참조 카운팅을 관리하는 소스 코드를 작성할 때 종종 오류를 일으킨다. 이는 참조 카운트를 부정확하게 하여, 어떠한 클라이언트도 사용하지 않는 COM 오브젝트가 해제되지 않고 메모리 누수를 일으키거나, 이미 해제된 COM 오브젝트에 대해 메서드를 호출하게 하여 런타임 오류를 일으킨다.
이런 문제들을 줄이기 위해 마이크로소프트는 C++ 개발자들을 위해 ATL(Active Template Library)을 소개하였다. ATL은 높은 수준의 COM 개발 패러다임을 지원한다. 또한 COM 클라이언트 애플리케이션 개발자가 직접 참조 카운팅을 관리하지 않도록 하는 스마트 포인터 오브젝트(smart pointer objects)를 지원한다.
인스턴스화.
COM은 COM 오브젝트를 인스턴스화하는(즉 생성하는) 작업에 클래스 팩토리(Class Factories)를 사용하도록 표준화하였다. COM 오브젝트를 생성하기 위해서는 반드시 다음 두 개의 항목 조합이 있어야 한다:
각각의 COM 오브젝트는 반드시 유일한 클래스 아이디(GUID)가 할당되어 있어야 한다. 또한 각각의 COM 오브젝트는 반드시 자신의 클래스 팩토리가 있어야 한다. 클래스 팩토리는 그 자신도 역시 COM 오브젝트로서 codice_1 인터페이스를 구현하는 오브젝트이다. 이러한 클래스 팩토리의 역할은 다른 오브젝트들을 생성하는 것이다.
보통 클래스 팩토리 오브젝트는 COM 오브젝트를 포함하고 있는 바이너리 실행 파일(즉 서버 코드)와 같은 파일에 포함된다. 클래스 팩토리 오브젝트의 소스 코드는 COM 오브젝트 개발자가 직접 작성할 수도 있지만, (비주얼 베이직 컴파일러같은) 코드 생성 프로그램에서도 생성할 수 있다. 클래스 팩토리를 사용하여 오브젝트를 생성하려면, 대상이 되는 오브젝트의 클래스 아이디가 반드시 있어야 한다. 클래스 팩토리는 클래스 아이디를 사용하여 해당 오브젝트를 인스턴스화한다.
클래스 팩토리가 하나 이상의 클래스에 대한 오브젝트를 생성할 수 있다는 점을 알아두자. 즉 서로 다른 클래스 아이디를 가지는 오브젝트들이 같은 클래스 팩토리 오브젝트에서 만들어질 수 있다. 그러나 이 부분은 COM 오브젝트 및 클래스 팩토리 개발자들에게만 관계되는 내부 사항이다. COM 시스템은 이 부분에 대해 투명하다.