developer tip

"단순히 C / C ++로 프로그래밍하는 것을 선호"하기 때문에 Android 앱을 C / C ++로 작성하면 안되는 이유는 무엇입니까?

optionbox 2020. 10. 10. 09:59
반응형

"단순히 C / C ++로 프로그래밍하는 것을 선호"하기 때문에 Android 앱을 C / C ++로 작성하면 안되는 이유는 무엇입니까?


업데이트 됨 (명확성과 모호성을 줄이기 위해) :

저는 안드로이드 앱을 다루기 시작할 것입니다. NDK를 사용하여 C ++로 작성할 계획 이었지만 (C ++에 대한 경험이 더 많고 Java보다 선호하기 때문에) Android NDK 페이지 에서 다음을 발견했습니다 .

NDK는 앱에 필수적인 경우에만 사용해야합니다. 단순히 C / C ++로 프로그래밍하는 것을 선호하기 때문이 아닙니다.

직업에 맞는 한 선호하는 언어를 사용해야한다는 인상을 받았습니다. 누군가가 안드로이드 개발에 C / C ++를 사용하지 않는 것이 왜 그렇게 강력하게 권고되는지 설명 할 수 있습니까?


실물:

저는 모바일 앱, 특히 현재 휴대 전화의 OS 인 Android를 다루기 시작하고, 앱을 C ++ (또는 적어도 코어, Java로 래핑)로 작성하는 것이 허용 가능한 옵션인지 궁금합니다.

약간의 배경 지식, 저는 3 개의 C ++ 과정 (입문, 중급, OOP, 봄에 STL 과정 수강)을 수강하고 Java 과정 (중급) 1 개만 수강 한 컴퓨터 과학 전공입니다. 이 때문에 C ++에 더 익숙하고 Java보다 선호합니다. Android NDK 페이지 에서 다음을 발견했습니다 .

Android에서 기본 코드를 사용하면 일반적으로 성능이 눈에 띄게 향상되지는 않지만 항상 앱 복잡성이 증가합니다. 일반적으로 단순히 C / C ++로 프로그래밍하는 것을 선호하기 때문에 NDK가 앱에 필수적인 경우에만 NDK를 사용해야합니다 .

  • 직업에 맞는 언어와 익숙한 언어를 사용해야한다는 인상을 받았습니다.
  • C ++를 지원하지만 Java는 지원하지 않는 iOS와 같은 다른 모바일 플랫폼으로 애플리케이션을 이식하고 싶을 수 있습니다.
  • Java는 고급 언어이므로 개발 속도가 빨라야하지만 거의 모든 것을 다시 배워야하기 때문에 개발 속도가 느려질 것 같습니다 (언어에 대해 하나의 수업 만 들었으므로)

어떤 조언이라도 대단히 감사하겠습니다.

추신 :이 주제에 대한 많은 답변은 몇 년 전의 것이며 NDK를 언급하는 후속 답변은 거의 없습니다. 따라서 Android 2.3 이상에서 전체 네이티브 앱을 개발할 수 있습니다.


이렇게 생각해보세요. Java SDK를 사용하여 개발자가 사용할 수있는 API를 100 % 활용하는 완전한 작동 애플리케이션을 구축 할 수 있습니다. API 관점에서 SDK로 수행 할 수없는 NDK로 수행 할 수있는 작업은 없습니다. NDK는 더 높은 성능을 제공합니다.

이제 그것을 반대로보십시오. NDK에서 애플리케이션을 100 % 작성하기로 선택한 경우에도 모든 기능을 갖춘 애플리케이션을 작성할 수 있지만 액세스 할 수있는 프레임 워크 API의 수가 제한됩니다. 네이티브 레이어에서 모든 Android 프레임 워크에 액세스 할 수있는 것은 아닙니다. 대부분의 API는 Java 전용입니다. 즉 모든 API를한다는 것은 아니다 당신이 해야 할 수는 NDK에서 사용할 수없는,하지만 어디 근처 ALL 하는 API가 노출되어있다.

이 외에도 NDK는 배포 크기를 확장하는 플랫폼 별 코드를 도입합니다. 지원하려는 모든 기기 아키텍처에 대해 네이티브 코드는 모두 동일한 APK에 패키징 된 .so 파일 (armv5, armv7 및 x86 용 하나)에 빌드되어야합니다. 애플리케이션을 배포 할 때 각 아키텍처에 대해 별도의 APK를 빌드하는 작업을 수행하지 않는 한 이러한 실행 코드 복제는 앱의 크기를 3 배로 만듭니다 (예 : '팻 바이너리'). 따라서 APK의 크기가 크게 늘어나는 것을 원하지 않으면 배포 프로세스가 조금 더 작업이됩니다.

다시 말하지만,이 중 어느 것도 사용자가 선택한 작업을 수행하는 것을 금지하는 것은 아니지만, Google이 Java를 대부분의 코드에 대해 "선호하는"방법으로 설명하고 저항이 가장 적은 경로로 설명하는 이유를 지적합니다. 나는 그것이 문서가 왜 그렇게 표현되었는지에 대해 약간의 빛을 비추 길 바랍니다.


인생에서 하나의 앱만 개발하려는 경우 NDK를 사용하세요.

평생 동안 하나 이상의 애플리케이션을 개발하려는 의도로 Android 개발을 배우는 것을 목표로하고 있고 이들 모두를 적절히 지원할 수 있기를 원하는 경우, Java를 배우면 장기적으로 더 잘할 수 있습니다. 대신 Android의 Java SDK를 사용하십시오.


King의 프로그래머는 게임 로직에 C ++를 사용합니다. 그리고 그들은 매출액으로 잘 판단하는 것 같습니다.

제 경험상 C ++는 문제 해결사를위한 것이고 Java는 문제를 피하는 사람을위한 것입니다. 나는 어느 언어를 좋아하지만 좋은 코드를 작성할 때 C ++는 상당히 보람이 있습니다. 그러나 거기에 도달하는 데 몇 분의 마법이 필요할 수 있습니다.

일반적으로 Python 또는 R로 작업을 수행하는 데이터 과학자에게 C ++를 추천 할 수도 있습니다. C ++는 성능이 좋든별로 든 똑같이 할 수 있지만 언어에있어 천재 여야합니다. 그렇기 때문에 C ++을 하고 싶은 사람에게 절대 C ++를 추천 하지 않을 것입니다. 그저 그들이 원하는 대접에주의를 기울일 것입니다.


메인 앱에 자바를 사용한다고 말하고 싶습니다. 그러나 이식해야하는 C ++ 코드가 있거나 C ++로 효율적으로 구현되는 라이브러리가있는 경우 해당 비트에 ndk를 사용합니다.


http://betanews.com/2014/07/22/why-c-is-the-perfect-choice-for-modern-app-development/ 에서 흥미로운 기사를 찾았습니다.

C ++는 플랫폼 독립성을 위해 특별히 제작되었으며 존재하는 모든 단일 운영 체제에서 찾을 수 있습니다. 일반적인 모바일 사용자는 Android 앱이 Objective-C로 작성된 Java 및 iOS 앱이라는 것을 알고있을 수 있지만, 많은 사람들이 모르는 것은 다른 무엇보다 장치의 메모리에 C / C ++ 코드가 더 많다는 것입니다. C / C ++는 소형 장치 (예 : 하드웨어와 상호 작용하는 커널 및 일반적인 런타임 라이브러리) 및 이러한 장치를 활성화하는 통신 네트워크의 기술 대부분을 구동합니다. 개발 팀에게 더 중요한 것은 모든 장치 및 플랫폼에서 수행해야하는 모든 작업을위한 C / C ++ 인터페이스 및 라이브러리가 있다는 것입니다. Android NDK 도구 세트는 원래 게임 개발 팀이 Java 및 Android Java 런타임 Dalvik (가상 머신)을 피함으로써 장치에서 최상의 성능을 얻을 수 있도록 원래 추가 된 완전한 C / C ++ 지원의 좋은 예입니다. Android Java 코드가 실행됩니다. 모든 Android 서비스를 사용할 수 있도록 정기적으로 개선되었습니다.


가장 중요한 고려 사항은 컴파일 된 Java 코드가 모든 안드로이드 장치에서 변경되지 않고 실행되는 반면 네이티브 코드는 모든 대상 플랫폼에 대해 컴파일되어야한다는 것입니다.

Java와 Android 모두에 대한 일반적인 의도는 모든 앱을 Java로 작성하지 않고 대부분을 작성하고 다른 옵션이 없을 때만 기본 기능을 사용하는 것입니다. 따라서 앱 작성에 대한 모든 것이 Java에서 그렇게 할 수 있습니다.

자바로 작성함으로써 네이티브 세계와 자바 세계를 연결하는 과정에서 많은 어려움을 피할 수 있습니다.

또한, 당신이 잠수하고 Java를 배우면 큰 도움이 될 것입니다. Android 앱이 더 좋을뿐만 아니라 OO에 대해 상당히 다른 접근 방식에 노출되고 더 나은 프로그래머가 될 것입니다.

여기에 Java로 작성하여 모든 보안 위험을 피할 수 있다는 사실을 추가하십시오.

제 생각에 이것은 쉬운 일입니다. Java를 사용하십시오.


일반적인 안드로이드 개발에 C ++를 사용하지 않을 이유가 없습니다. 다른 OS가 있습니다. 자바를 배우거나 배우지 않고 작업하는 동안 더 실망스럽고 복잡 할 것입니다!

참고 URL : https://stackoverflow.com/questions/13773686/why-shouldnt-an-android-app-be-written-in-cc-because-you-simply-prefer-to-p

반응형