강사님께서 JAVA에 관련해서 말씀하신 것들 중 기억에 남는것들 글 쓰기.
말씀하신 내용을 바탕으로 글을 쓰고 책을 약간 참고했습니다.
1. SUN의 기구한 역사
JAVA를 개발했던 SUN microsoft가 겪은 불쌍한 일들에 대해서 열정적으로 말씀하시는 모습이 가장 인상 깊었다. 본인부터가 SUN에서 오랫동안 일하셨던 분이라서 그런가 경험을 토대로 생생한 이야기들을 해주시면서 Oracle 마음에 안든다고 외치시는 모습이 인상 깊었다.
모든 가전제품에 사용될 수 있는 만능 언어 OAK에서 시작한 자바는, 만능 언어라는 이름이 무색하게 아무도 관심을 주지 않았다고 한다. 당시에는 그런 기술의 필요성을 전혀 못느끼던 시대였기에, OAK는 곧 바로 묻혀버렸다. 시작부터 불쌍하다.
시간이 지나 90년대(or 00년대)에 Web기술이 본격적으로 발전되고 널리 사용되기 시작함에 따라 JAVA는 그제서야 주목을 받는다. 그리고 SUN은 이 JAVA를 무료로 배포하는데, 무료 배포를 통해서 JAVA 기술자를 많이 많이 양산해내고 그 기술자들이 IT 시장에 공급되면, JAVA를 최적으로 사용하는 자신들 SUN 회사의 기계들 역시도 자동으로 널리 사용되고 판매될 것이라는 설계였다.
하지만 여러 대기업에서 이런 제품을 가만히 내버려두지 않았다. Microsoft는 JAVA가 무료 라이센스임을 이용해서 마음대로 퍼가다가 자신들의 이름만 같다붙히고는 자사의 기술인것 마냥 속여서 상품으로 이용해 먹었으며, Oracle은 훗날 SUN을 인수해버리고는 JAVA 고유의 객체지향 프로그래밍 철학을 완전히 무시한채 문어발식 업데이트만 하고 있다.
그 외에도 인수 당할 때 가격으로 껌 1통, 2통 값 정도만 제시 받는 등등 현재 프로그래밍 언어의 대표 언어를 만든 회사인것 치고는 불쌍한 일들이 많았던 곳이라고 한다. 심지어 현재 JAVA를 프로그래밍하는 대표적인 툴인 Eclipse은 이름부터가 월식, 황혼.(태양이 지다.)라는 뜻 ㅋㅋ 이 툴은 Oracle에서 만들었으며, 기존에 이런 툴을 만들지 않고 그냥 무료배포만 해놓고 손 놓고 있던 SUN에서는 뒤통수 맞고 그제서야 새로운 툴을 만들었지만, 결국 Eclipse에게 완전히 밀려서 사라졌다고 한다. 프로그램 이름이 NET 뭐시기랬는데 까먹었다. 처음 들었다 그런 프로그램.
하여간 SUN은 이런 대단한 것을 만들어내고는 너무 안일하게 운영하다가 주변의 나쁜 공룡들 때문에 망한것 같다. (일단 최소 강사님 말씀대로라면 그렇다.) 참 불쌍했다.
2. JAVA의 특징 6가지.
1. 플랫폼 독립적
2. 객체 지향적
3. 메모리 관리 자동화
4. 멀티스레드 지원
5. 오류(Exception) 처리가 좋음
6. 보안 능력이 강력함
3. 특징 ++
*이식성이 높다.
이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있은 것을 말한다. MS 윈도우에서 실행되는 대부분의 프로그램들은 MS 윈도우 환경에 최적화 되어있기 때문에 유닉스나 리눅스에서 실행하려면 프로그램 소스 파일을 수정한 수, 재컴파일 과정을 거쳐야 한다. JAVA는 MS 윈도우에서 실행되는 대부분 프로그램들과 다르게 자바 실행 환경 (JRE)가 설치되어 있는 운영체제라면 어디에서나 실행 가능하다.
*함수적 스타일 코딩 지원
함수적 프로그래밍은 최근들어 다시 부각되고 있는데, 대용량 데이터의 병렬 처리 그리고 이벤트 지향 프로그래밍을 위해 적합하기 때문이다. 자바는 함수적 프로그래밍을 위해 람다식을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.
*다양한 애플리케이션 개발 가능.
자바는 윈동, 리눅스, 유닉스, 맥 등 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있다. 단순한 콜손 프로그램에서부터 클라이언트용 윈도우 앺플리케이션, 서버용 웹 애플리케이션 그리고 모바일용 안드로이드 앱에 이르기까지 거의 모든 곳에서 실행되는 프로그램을 개발할 수 있다. 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션 형태로 정의하고 있다.
*동적 로딩 지원
자바 애플리케이션은 여러 개의 객체가 서로 연결되어 실행되는데, 이 객체들은 클래스로부터 생선된다, 애플리케이션이 실행될 때 모든 객체가 생성되지 않고ㅡ 객체가 피룡한 시점에 클래스를 동적 로딩해서 객체를 생성한다. 또한 개발 완료 후 유지보수가 발생하더라도 해당 클래스만 수정하면 되므로 전체 애플리케이션을 다시 컴파일할 필요가 없다. 따라서 유지보수를 쉽고 빠르게 진행할 수 있다.
*막강한 오픈소스 라이브러리가 풍부함
그렇다.
3. 객체지향 철학
글 쓸라하니까 까먹었다. 단순히 자바를 쓰기만하는게 객체지향인게 아니라 뭔가 철학이 있다고 말씀하셨는데 까먹었다. 개발자가 편한? 무언가였는데, 어쨋든 그렇다.
그 외에도 단순히 프로그래밍, 코딩 교육만 하시는게 아니라 자신의 경험을 바탕으로한 역사 이야기, 업계 현황 이야기 등등으로 비전공자들도 관심있게 들을 수 있게 강의하는 모습이 인상 깊었다. 기억나는데로 글 쓰다보니 1번 빼고는 전부 책 내용 그대로 옮겨쓴것이 되었는데, 아마 SUN 개발진이랑 나랑 스타일이 비슷해서 그런것 같다.
JAVA가 엄청난 것이건 말건 자신들의 취지대로 밀고 나가기 위해 무료로 뿌려버리는 화끈함과, 그냥 단순하게 자기들이 먹던 커피에서 따와서 제품 로고와 제품 이름을 짓는 쿨함. 뭔가 여러모로 내 스타일이였다. 그래서 특히나 이것이 기억에 남았던것 같다.
'[K-Digital] 온·오프 연계 AI활용 지능형 서비스 개발' 카테고리의 다른 글
멀티캠퍼스 AI 온라인 강의 숙제 06번째 (0) | 2021.02.03 |
---|---|
멀티캠퍼스 AI 온라인 강의 숙제 05번째 (0) | 2021.02.02 |
멀티캠퍼스 AI 온라인 강의 숙제 04번째 (0) | 2021.01.31 |
멀티캠퍼스 AI 온라인 강의 숙제 03번째 (0) | 2021.01.29 |
멀티캠퍼스 AI 온라인 강의 숙제 02번째 (0) | 2021.01.28 |