기본 콘텐츠로 건너뛰기

[Mac OS X] 데스크탑 응용프로그램 개발시작

[Mac OS X] 데스크탑 응용프로그램 개발시작

현재 회사에서 다음 프로젝트로 Mac OS X를 개발해야 하는 일정이 생겨 난생 처음 데스크탑 응용프로그램을 개발하기 공부를 시작했고 여러가지 플랫폼이 있다는것을 발견했다. 어떤 플랫폼을 사용해야할 지 먼저 고민해보자.

무엇으로 개발할것인가?

Xcode & Swfit or Objective-C Mac OS X 는 objective-c를 기반으로 만들어졌다. apple에서 제공하는 Xcode와 objective-c 혹은 Swift로 응용 프로그램을 만들 수 있다. Electron Electron 프레임워크를 사용하면 javascript, HTML, CSS를 사용하여 크로스 플랫폼 데스크탑 응용 프로그램을 만들 수 있다. react-native-desktop Qt 프레임 워크를 기반으로하는 크로스 플랫폼이다. react-native 와 javascript로 응용 프로그램을 만들 수 있다. Qt는 컴퓨터 프로그래밍에서 GUI 프로그램 개발에 널리 쓰이는 크로스 플랫폼 프레임워크.

각 플랫폼의 장단점은 무엇인가?

Xcode & Swfit or Objective-C

- 장점

모든 OSX API에 직접 접근할 수 있다. Xcode를 통해 App Store에 쉽게 배포할 수 있다.

- 단점

Windows 전용 응용 프로그램을 다시 개발해야한다. Swift언어를 모른다면 새로 공부해야 한다.

Electron

- 장점

웹스택을 가지고 빠르게 만들 수 있다. 다양한 플랫폼을 지원한다.

- 단점

Native언어로 개발할때 보다 성능이 떨어질 이슈가있다. OS X API를 사용하는데 복잡하다. *API에 대한 JavaScript 래퍼가 없으면 자체 래퍼를 작성하지 않는 한 프로젝트에서 사용할 수 없습니다.

React-native-desktop

- 장점

현재 개발스택과 완전히 동일하므로 더 빠르게 개발 할 수 있다. 다양한 플랫폼을 지원한다.

- 단점

Native언어로 개발할때 보다 성능이 떨어질 이슈가있다. 실사용 사례와 플랫폼 관련 자료가 많이 없다.

우리에게 무엇이 필요한가?

- 개발속도

우리는 react-native 와 nodejs를 사용하고 ios에서 필요한 부분은 objective-c & Swift로 브릿지를 연결하여 개발하고 있다. 하지만 대부분의 개발자들의 개발스택이 javascript이기 때문에 개발 속도상 javascript 언어를 사용하는 플랫폼이 훨씬 더 퍼포먼스가 잘 나올 것으로 예상된다.

- 다양한 플랫폼

아주 나중에 일이지만 개발일정 상 나중에 windows를 개발해야 하는 상황이 올것으로 예상된다. 그렇다면 지금 react-native를 사용하여 ios와 안드로이드를 개발하는 것 같이 나중을 위해서 데스크탑 응용프로그램도 크로스플랫폼으로 개발하는 것이 유리할 것이다.

우리 서비스를 적용 할 수 있는가?

현재 우리회사에서 사용하고 있는 주요 sdk를 electron에서 사용할 수 있는지가 가장 큰 이슈였다. sdk 메인 사이트를 확인한 결과 지원하는 것으로 확인했다.

결론

앞으로 회사의 방향성과 현재 개발팀의 상황으로 봤을때 Electron으로 개발을 시작하는게 가장 좋은 선택인것 같다. 아직 모바일에서의 react-native처럼 데스크탑 크로스플랫폼이 발전하지는 않았지만 앞으로 빠른 퍼포먼스를 내기위해 응용프로그램을 만드는 사람에게 있어서는 굉장히 좋은 선택지 인것 같다.

from http://bangc.tistory.com/17 by ccl(A) rewrite - 2020-03-20 14:54:05

댓글

이 블로그의 인기 게시물

[2020-angstromCTF] web - A peculiar query write-up

[2020-angstromCTF] web - A peculiar query write-upEnglish write-upUI seems like below.If you click the 'the source' link, you can get back-end source code.const express = require("express"); const rateLimit = require("express-rate-limit"); const app = express(); const { Pool, Client } = require("pg"); const port = process.env.PORT || 9090; const path = require("path"); const client = new Client({ user: process.env.DBUSER, host: process.env.DBHOST, database: process.env.DBNAME, password: process.env.DBPASS, port: process.env.DBPORT }); async function query(q) { const ret = await client.query(`SELECT name FROM Criminals WHERE name ILIKE '${q}%';`); return ret; } app.set("view engine", "ejs"); app.use(express.static("public")); app.get("/src", (req, res) => { res.sendFile(path.join(__dirname, "index.js")); }); app.get("/", async (req, res) => { if (req.query.q) { try …

nodejs 백그라운드 실행 PM2 활용하기

nodejs 백그라운드 실행 PM2 활용하기개발/기타정보개발/기타정보 nodejs 백그라운드 실행 PM2 활용하기//pm2는 프로세스매니저2로 프로세스를 관리해준다 npm install pm2 -g // pm2 설치 pm2 start server.js //실행하고싶은 코드를 작성한다음 실행 pm2 list // pm2로 실행한것들 목록보기 pm2 restart server.js //재시작 pm2 stop server.js//중지 //stop 하면 서버가 중지되지만 pm2 list에는 남아있게된다 //pm2 list 에서도 제거하고싶으면 pm2 delete [id] // id는 pm2 list하면 나옴 , 아니면 pm2 delete server.js //해도됨 pm2 monit //서버들 모니터링도할수있다 pm2 log //서버 로그출력되는것도 볼수있따 pm2 start server.js-o ./log.txt // 이런식으로 실행하면 서버에서 console.log 로 출력되는것을 log.txt파일에 저장할수있다자세한 내용은 공식홈페이지로 !from http://dulki.tistory.com/118 by ccl(S)

NodeJs - MariaDB 연동하기

NodeJs - MariaDB 연동하기NodeJs에서 마리아 DB를 사용해보자.1. 마리아DB 설치마리아DB 홈페이지에서 마리아DB를 설치합니다.2. DB 및 테이블 생성테스트 DB와 테이블을 생성한 후 샘플데이터를 Insert합니다.1 2 3 4 5 6 7 8 9 10 11 12 DROP DATABASE IF EXISTS nodejs_test; CREATE DATABASE nodejs_test; DROP USER IF EXISTS nodejs_admin; CREATE USER nodejs_admin@ '%' IDENTIFIED BY 'admin' ; GRANT ALL PRIVILEGES ON nodejs_test. * to nodejs_admin@ '%' ; USE nodejs_test; DROP TABLE IF EXISTS users; CREATE TABLE users ( user_key INT NOT NULL AUTO_INCREMENT PRIMARY KEY , user_id VARCHAR ( 128 ) UNIQUE NOT NULL ); INSERT INTO users(user_id) VALUES ( 'TEST01' ); cs3. Nodejs 프로젝트 생성CMD 혹은 powershell을 실행 후 workspace로 이동합니다.npm init을 실행합니다.프로젝트 관련 여러 사항을 묻습니다. 적당히 입력하고 넘어갑시다.해당 작업을 수행하면 package.json 파일이 입력된 값에 의해 자동으로 생성됩니다.1 2 3 4 5 6 7 8 9 10 11 12 { "name" : "mariadb-test" , "version" : "1.0.0" , "description" : "mariadb connection testing project." , "main" : "index…