라이브러리와 프레임워크 구분 모던 웹 JavaScript /  

 

jQuery가 라이브러리인지 프레임워크인지 계속해서 질문이 와서 정리합니다.

 

정리부터 하면

일단 jQuery는 라이브러리

라이브러리와 프레임워크를 구분하는 기준은 제어 역전

제어 역전이란 메인 함수를 만드는 주체가 우리 팀이 아니고 그거인 것을 의미합니다.

 

# 자바스크립트 개발자들은 딱히 규칙 없이 부르는 느낌[뭐 요즘 다 그런 느낌]

 

일반적인 웹에서 사용하는 자바스크립트 코드를 라이브러리 또는 프레임워크로 구분하는 것은

"그거 개발한 사람 마음대로"라고 볼 수 있습니다.

 

사실 현대 들어서나 자바스크립트에서 모두가 인정할 만한 프레임워크가 나오는데

[사실 그래도 "그따위걸 프레임워크라고 부르냐 하면서" 막 싸움][뭘 기준으로 투닥하는지도 잘 모르겠어....]

예전부터 뭔가 자기가 만든걸 멋지게 포장(?)하고자

좀 크면 프레임워크라고 부르는 경향이 있다보니.... 기존 용어의 혼란이 생겨....

대충 좀 크다 = 프레임워크 / 좀 작다 = 라이브러리

라고 구분하더군요[그 구분이 애매해서 투닥투닥 싸우지요].

 

# 제어 역전

 

그럼 일반적인 프로그래밍 언어에서 라이브러리와 프레임워크를 구분하는 방법은 무엇일까요?

바로 제어 역전(Inverse of Control: IoC라고도 부릅니다 '-')입니다. 

 

# 일반적인 제어 흐름 - main() 함수 부터

 

일반적으로

C/C++ 언어로 프로그램을 만드실 때

자바로 프로그램을 만드실 때

C#으로 프로그래밍을 만드실 때

모두 처음 공부할 때 main() 함수부터 시작한다고 배우셨을 것입니다.

[마찬가지로 파이썬 또는 루비 등등에서도 메인이 있지요.]

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

만약 이 main() 함수를 직접 만들고

기존에 있던 다른 파일의 함수를 가져와서 썼다면

이때 다른 파일 = 라이브러리 입니다.

 

jQuery를 사용하는 경우에도 메인이라 부를 수 있는 부분은 내가 만들고

다른 파일에서 함수를 가져와서 쓰지요. 따라서 라이브러리라고 부릅니다.

 

PS. 곧 제어 역전을 설명할텐데....

jQuery에서 $(document).ready() 같은 이벤트에 쓰니까 이 부분을 제어 역전이라고 볼 수 있는 것이 아니냐고 하는 분도 계신데요.

으음.... 사실 측면을 다르게 보면 그렇게 봐서 프레임워크라고 부를 수도 있기는 합니다[뭐 용어는 관점에 따라 다를 수 있으니].

[근데 사실 그냥 만든 사람 설명 따라주는게 좋음.... jQuery는 만든이들이 라이브러리라고 스스로 말하니 라이브러리]

 

# 제어 역전 - main() 함수는 대체 어디에

 

그런데 유명한 프레임워크를 보시면

(MFC, Windows Forms, WPF, XNA, Unity Framework, Unreal Framework, Rails, Django 등등)

메인 함수가 대체 어디에 있는지 찾기조차 힘듭니다.

그리고 찾아봤자 그 메인 함수를 건드리면 안됩니다.

 

프레임워크란 "내가 다른거 일단 다 만들어뒀으니까.... 넌 그거 구조 맞춰서 구현해"라고 하는 것입니다.

원래 제어라는 것은 개발자가 해야하는 것인데

"닥쳐 넌 파일 만들고 클래스와 함수만 만들어 그걸 제어하는건 나(프레임워크)다"하는 것이 제어 역전입니다.

 

따라서 개발자는 프레임워크가 정한 위치에

파일을 생성하고 클래스를 만들고 함수(또는 메서드)를

프레임워크가 제공해주는 편리한 기능들로 꾸며주면

[이때 이런 각각의 것은 라이브러리가 되겠지요 ㅇㅇ프레임워크의 ㅇㅇ관련 라이브러리]

 

프레임워크가 알아서 프로젝트 구조 조합해주고 뿅뿅 다 해줍니다.

개발자는 대체 그게 내부적으로 어떻게 호출되는지는 잘 몰라도됩니다.

이런게 프레임워크랍니다 '-'

 

간단한 구분 끝 '-'

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
558 3D 프로그래머를 위한 커브 입문서 : 직선에서 곡면까지 file 졸리운_곰 2017.05.16 207
557 B-spline curve (비스플라인 곡선) / 베지어 곡선( bezier curve) file 졸리운_곰 2017.05.16 362
556 The Dirty Little Secrets of NURBS file 졸리운_곰 2017.05.16 112
555 NURBS란? 졸리운_곰 2017.05.16 79
554 3D 기초상식: NURBS에 관해 file 졸리운_곰 2017.05.16 122
553 재귀 호출 recursive call file 졸리운_곰 2017.05.13 260
» 라이브러리와 프레임워크 구분 모던 웹 JavaScript / 책 file 졸리운_곰 2017.05.06 81
551 브레인스토밍부터 마인드맵까지, 생각정리의 기술 file 졸리운_곰 2017.05.04 240
550 Electron 시작하기 file 졸리운_곰 2017.04.24 123
549 Electron 애플리케이션 만들기 file 졸리운_곰 2017.04.24 126
548 Electron으로 웹 앱 만들듯 데스크톱 앱 만들기 file 졸리운_곰 2017.04.24 162
547 블렌더 3D(Blender 3D) 초보자를 위한 인터페이스 익히기 file 졸리운_곰 2017.04.23 440
546 블렌더 3d를 처음 접하는 분들이 보면 좋은 한글 강좌들 file 졸리운_곰 2017.04.23 530
545 데이터를 기반으로 비즈니스 인사이트를 검증하는 방법 – A/B TEST file 졸리운_곰 2017.04.15 111
544 A/B Testing에 대한 기초적인 정보들 file 졸리운_곰 2017.04.15 92
543 A/B 테스팅이란 file 졸리운_곰 2017.04.15 80
542 서브라임텍스트 나눔고딕코딩 폰트 설정 졸리운_곰 2017.04.04 140
541 Micro­service Websites file 졸리운_곰 2017.04.02 259
540 특허 실용신안 심사기준 - 특허청 file 졸리운_곰 2017.03.28 92
539 특허출원 특허청 특허로 주소 file 졸리운_곰 2017.03.28 142
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED