산책 : 어떻게 그의 여자 친구 무명의 OS에 설명하기는 크로스 플랫폼을 달성하는 방법은?


주말은 집에서 휴식, 친구의 브러시 원에서 그의 여자 친구, 그녀는 갑자기 나에게 물었다 :

홍콩 멩 OS 검토

2019년 8월 9일 화웨이 개발자 회의, CEO 유 청동, 화웨이의 소비자 사업은 공식적으로 자신의 운영 체제 무명, 커널 리눅스 커널, 마이크로 커널 무명과 LiteOS의 출시를 발표했다. 미래는 리눅스 커널과 LiteOS 만 무명의 마이크로 커널의 제거 얻을 것이다.

홍콩 멩 (영어 : 방주 코드 명 하모니 OS는) 2012 년 이후, 개발이 호환되는 Android 애플리케이션 크로스 플랫폼 운영 시스템이 될 수있는 화웨이이다.

그림 : 무명의 OS의 네 가지 기술적 특성
1. 단말기 OS에 처음으로 아키텍처를 분산, 터미널에서 원활한 협업 환경을 달성하기 위해
2. 부드러운 자연 시스템을 달성하기 위해 IPC 대기 시간과 고성능 엔진 기술을 결정
3. 상기 단말 장치 신뢰할 수있는 보안 기반의 마이크로 커널 아키텍처를 리모델링
4. 통합 IDE 지지체의 개발, 다중 단말 배포 단말 간 생태 주

크로스 플랫폼이란 무엇인가

에서 平台 ≈ 操作系统과거 . 따라서 운영 체제에 의존하지 전통적인 의미의 크로스 플랫폼은 하드웨어 환경에 의존하지 않습니다. 개발중인 운영 체제의 응용 프로그램은 다른 운영 체제로 계속 실행할 수 있습니다.

그러나 과학 기술의 발전과 함께, 平台 ≈ 操作系统그것은 화웨이는 무명의 OS를 출시처럼, 그는 휴대 전화, 시계, 컴퓨터, 자동차, 스마트 홈 장치와 같은 다양한 장치를 지원할 수, 설립되지 않았습니다.

그래서, 우리가 크로스 플랫폼에 대한 이야기는 오늘, 크로스 장치를 말한다. 平台 ≈ 设备

따라서, 화웨이는 무명의 OS는 다양한 장비에서 실행할 수있는 희망, 그래서 무명의 OS가 반드시 크로스 플랫폼 기능이 필요합니다.

또한, 홍콩 멩이 더 중요하다 사용자와 개발자 정말 플랫폼에서 느낄 수 있도록, 그냥 크로스 플랫폼 운영 시스템보다 더 많은 일을하고 싶었다.

따라서, 크로스 플랫폼 운영 체제 무명의 목표는 : 터미널 사용 시나리오에 대한 강력한 간 비즈니스 협업 기능을 즐길뿐만 아니라 최종 소비자에게, 같은 터미널에서 분산 응용 프로그램의 개발과 같은 단말기의 개발로, 비즈니스 로직을 집중하는 개발자 수 있도록 원활한 경험을 가지고.

자바 크로스 플랫폼

먼저 자바는 크로스 플랫폼을 달성하는 방법 것입니다.

크로스 플랫폼 지원을위한 자바는, 보안 및 이동성 네트워크에 대한 지원으로, 자바 아키텍처를 통해 배포됩니다. 배우 등등 중요한 역할, 클래스 파일, 자바 가상 머신 (JVM)과가있는 Java 언어 사양입니다.

우선, Java 언어 사양의 범위와 자바 언어의 기본 데이터 유형의 동작을 정의합니다. 둘째, 모든 자바 파일은 하나의 클래스 파일로 컴파일합니다. 마지막으로, Java 가상 머신은 클래스 플랫폼에 해당하는 이진 파일로 바뀝니다.

Java 가상 머신이 기본 운영 체제 및 하드웨어의 차이를 보호하기 때문에 자바의 플랫폼 독립성, 플랫폼의 상단에 성적 Java 가상 머신의 기초에 내장되어 있습니다.

여러 단계를 통해 이동하는 몇 가지 자바 코드를 실행하려면, 수행 할 수있는 기계로 기계 코드로 자바 소스 코드,이 과정은 주로 가상 머신에 의해 수행된다.

유명한 핫스팟 가상 머신에서, 두 가지 형태로도 해석 및 시간 컴파일된다 :

  • 해석

    • 기계 코드를 실행하는 하나 바이트 코드를 번역하고

  • 시간 컴파일러 (그냥 - 인 - 타임, JIT)

    • 바이트 코드에 포함 된 모든 메소드는 실행 전에 기계어 코드로 컴파일.

핫스팟 기본 혼합 모드는 모두 해석 및 실행 시간 컴파일의 이점을 결합한다. 먼저 코드 (핫 스폿 검출)를 반복하여 수행하는 뜨거운 바이트 코드를 해석하는 시간 편집 단위로 수행되는 방법.

안드로이드 플랫폼간에

사실, 안드로이드 자바 기반, 그래서 같은 토큰이, 당신은 몇 가지 안드로이드 코드를 실행하려면이 또한 여러 단계의 적용을받습니다 기계로 기계 코드로 안드로이드 소스 코드는 수행 할 수 있습니다.

그러나이 변환 프로세스를 달성하는 것은 안드로이드의 다른 버전에서 다릅니다 :

안드로이드 1.0 (2008 년) : 달빅라는 가상 머신을 사용하고 통역을 통합합니다. 앱이 실행 중일 때, 아주 천천히, 설명하는 문장으로 인터프리터, 코드 문장을 호출합니다.

안드로이드 2.2 (2010 년) : 응용 프로그램이 실행 중일 때 (그냥 시간) JIT 컴파일러 즉시 메커니즘의 도입은, 사용자들은 컴파일러 기능이 010101 기계 기계 코드가 번역 문장으로 문장없이, 직접 실행할 수 있습니다 사용합니다. 일반적으로 사용하지 않을 경우 기능을 표시하고 통역 번역을 위해 전화, 너무 빨리,하지만 당신은 응용 프로그램을 시작할 때마다이되지 한번에 한 번 재 컴파일 할 수 있습니다.

안드로이드 5.0 (2014 니안 월) : ART로 달빅 가상 머신 (안드로이드 실행 시간), (미리) AOT으로 JIT 컴파일러를 대체합니다. 그래서, 컴파일 된 코드는 101010 이해할 수있는 기계로 컴파일 될 수있는 동안 휴대 전화에 설치 한 앱 다운로드 후, 사용자가 번역하는 인터프리터 등을 사용하면 코드의 나머지 부분이 좋은 번역되지 않습니다, 그 다음 일어나. 그래서, 당신은 당신이 응용 프로그램, 앱 설치 시간 만 비트 길이를 열 때마다 컴파일 할 필요가 없습니다, 또한 귀하의 휴대 전화에서 공간을 차지합니다.

안드로이드 7.0 (2016) : 혼합 편집 메커니즘은 설치가 첫 번째 중간 코드를 컴파일하지 않지만, 사용자가 때 코드의 유휴 부분은 정적으로 컴파일하는 AOT 컴파일러를 통해 기계 코드로 컴파일 할 수 있습니다. AOT 컴파일 컴파일 여부를 시간이 없었 경우, JIT + 인터프리터를 호출합니다. 대기 시간 사용자를 단축 공간을 시간과 동일하다이 메커니즘은 APP를 설치하고, 결과적으로 최대의 효율을 상승 가상 머신 컴파일러와 인터프리터를 최적화 할 수 있습니다.

안드로이드 빌드 문제

그것은 2008 안드로이드 1.0의 시작 부분에서 볼 수있는, 안드로이드는 위의 컴파일러 최적화 노력을하고있다.

현재 안드로이드 채택 +의 JIT + AOT 통합 모드, + + 속도를 실행하는 것은 균형에 도달 한 속도의 설치가 차지하는 공간을 해석됩니다.

그러나 안드로이드 컴파일러 문제는 비판을 받아왔다. 이후의 설명 안드로이드 8.0의 개선에도 불구하고, 모델은 크게 효율성을 설명하기 위해, 설치에 적용 10.0 안드로이드 핫 코드에 사전 배치 방식을 제공하는 컴파일 된 사전 공통 코드에 알 수있을 것입니다.

그러나, 지금은 어쨌든, 안드로이드는 이러한 전제를 제거하지 못했습니다하는 응용 프로그램이 사용되는 APK, 또는 Java 코드로 포장된다. 즉, 처리 할 수있는 사용자는 APK의, 또한 상처입니다 컴파일 안드로이드 시스템, 내 경험 애플리케이션하지만 창문이된다.

플랫폼에서 홍콩 멩

그래서, 코드가 컴파일 홍콩 멩 OS는 어떻게의 종류입니까? 그는 크로스 플랫폼 그것의 문제를 해결하는 방법은?

우리는 무명 OS 아키텍처, 위의 그림에서 볼 수있는, 방주 컴파일러멀티 터미널 IDE 개발은 중요한 위치를한다.

크로스 플랫폼이 중요한 과제이며, 그 특히 지금 장치 유형, 어떻게 동일한 응용 프로그램, 휴대 전화, 점점 더 많은 다양한, 자동차가, 텔레비전 위에서 보여주기 위해 적용 할 수 있습니다 시계 것으로, 각 플랫폼 문제에 적응 그것은? 이 멀티 터미널 개발 IDE가 무슨 짓입니다.

화웨이는 개발자가 동일한 프로젝트를 기반으로 효율적인 많은 배를 구축 할 수 있도록 여러 개의 IDE, 다중 언어 컴파일러 통합, 분산 아키텍처는, 미리 지향 비주얼 프로그래밍을 키트 화면 레이아웃 컨트롤 및 대화식 지원 드래그 자동 적응을 제공하고 컨트롤을 드롭하여 단말기 제공 자동 실행 응용 프로그램, 진정한 개발, 배포 멀티 포트는 장치를 통해 생태 공유.

도면 자동 단말 장치의 다양한 적합 도움 웨이 그래픽 인터페이스 컨트롤을 드래그 할 수 IDE, 및 IDE로 제공된다.

IDE로 대상을 쉽게 자동으로 다양한 장치에 적합한 코드를 개발할 수 있지만, 기기에 의해 실행되는 컴퓨터 명령어들의 다양한 같지 이러한 코드를 설정하는 방법을 각각의 장치 안에 컴파일 요구 기계 명령어 그것?

안드로이드 장치가 컴파일 된 다른 장치에 가상 머신에 내장, 우리가 알고있는 장비 특히 컴파일하기 전에 의해 수행되어, 다음, 홍콩 멩 OS는 그것을 수행하는 방법인가? 이 일을 방주 컴파일러입니다.

화웨이의 방주 컴파일러는 기계 코드로 컴파일 한 번 높은 수준의 언어가 될 개발 환경에서 개발자들이 사용할 수있는 정적 컴파일러를 대체 할 수있는 최초의 안드로이드 가상 머신의 모델이다. 또한, 방주 컴파일러의 미래는 크게 개발 효율성을 향상시킬 수, 통합 다중 언어 지원을 컴파일합니다.

안드로이드 때문에 자신의 빌드 프로세스의 "느린"이유는 그는 가상 머신에 의해 기계 코드의 실행 파일로 컴파일 된 사용자의 휴대 전화에 필요, 결국 수행한다.

홍콩 멩 OS 방주 컴파일러를 사용하여 가상 머신을 거치지 않고 직접 기계 코드로 고급 언어 (자바)이 될 수 있습니다. 사용자의 전화에 컴파일 과정이 아닌 완료,하지만 응용 프로그램 개발 단계가 완료됩니다.

어느 정도, 방주 컴파일 - 방주 컴파일러으로 다운로드하기 전에 응용 프로그램 개발자가 신속하게 휴대 전화에 설치 될 수있다, 따라서 인식 할 수있는 기계어로 변환되어, VM을 컴파일하지 않고 최대 및 실행 얻을 컴파일 과정은 상당히 따라서 시스템을 스마트 폰을 실행하고 운영의 부담을 줄이고, 애플리케이션 개발 단계를 진행하는 것입니다.

화웨이 관계자는 방주 컴파일러는 모든 통역없이, 완전히 정적 언어 컴파일러 가상 머신을 대체 처음이다,보고합니다. 자바 개발 생산성과 C 언어 컴파일러의 운영 효율성 모두.

코드 컴파일뿐만 아니라, 컴파일러 방주는 또한 것을 제외하고 회수 안드로이드 메모리되어,보다 효율적인 메모리 메커니즘을 제공합니다 :

메모리 복구 메커니즘 안드로이드 채택 응용 프로그램을 일시 중지하는 것이 더 필요한 소리, 재활용에 초점을 때 무작위 Caton의 근본 원인 중 하나 인 세계 경제 회복. GC의 중앙 복구 시스템이 Caton을 제공 피하기 위해 방주 컴파일러는 메모리를 복구하는 실시간 기준 계산 방법을 사용하고 링을 제거하는 특수 알고리즘의 사용으로 (개체가 서로로 인한 문제를 제거하기 위해 재활용 할 수 없습니다 참조) . GC에 비해 메모리 복구의 방주 오히려 중앙보다, 실시간이며, 따라서 크게 Caton을 제거, 응용 프로그램 프로세스를 일시 중단 할 필요가 없습니다.

같은 JVM 실제로 여러 언어를 지원하는 또한, 화웨이는 말했다 방주 컴파일러는 언어의 개발을 통해 미래에 더 많은 지원합니다. 즉, 다른 언어 개발자, 미래는 OS 기반의 애플리케이션 개발을 무명 수 있습니다.

참고 :

https://www.jishuwen.com/d/2NN3

https://www.zhihu.com/question/339567108 https://www.cnbeta.com/articles/tech/876171.htm https://www.cnbeta.com/articles/tech/876919.htm은 https : / /juejin.im/post/5cb07000f265da037d4f9be6



추천

출처juejin.im/post/5d50d05ee51d4561da620117