Derzeit sind die meisten Mobilgeräte Smartphones, iPhones und Androiden. Kennen Sie die Obergrenze für die Größe jeder App? Ab August 2020 ist die iOS-App 4 GB und die Android-App 100 MB groß.
Wenn man das betrachtet, gibt es einen großen Unterschied ... Ich frage mich, ob Android eine Methode verwendet, um Daten später für Spiele mit großer Kapazität herunterzuladen. Ich habe den Heap nicht im Detail geschrieben, aber da das Terminal über einige GB Speicher verfügt, sollte dies kein großes Problem sein.
Worüber ich jedoch dieses Mal sprechen möchte, ist das zukünftige Telefon (= Garakei), das vor der Geburt der Smartphones als Hauptkraft aktiv war, und die Geschichte von DoCoMos i-appli.
Ich möchte vorstellen, dass die frühe Entwicklungsmethode von DoCoMos i-appli das Ergebnis tränenreicher Bemühungen war.
Die Zeit geht zurück in die Zeit von Garake. Ich erkenne, dass es Docomos i-appli war, die die App-Welt von Garake geprägt hat, aber was war zu dieser Zeit die Obergrenze der Größe?
Im Folgenden finden Sie Informationen zur Anwendung im DoJa-1.0-Profil, die zu Beginn veröffentlicht wurde.
Modell | App-Größe (KB) | Heap-Kapazität(KB) |
---|---|---|
FOMA N2001 | 10 | 96 |
FOMA N2002 | 10 | 560 |
FOMA P2101V | 30 | 1100 |
FOMA D2101V | 10 | 128 |
FOMA P2002 | 10 | 560 |
FOMA SH2101V | 30 | 1024 |
FOMA T2101V | 30 | 1105 |
Offizielle Seite https://www.nttdocomo.co.jp/service/developer/make/content/spec/iappli/#notice05
Die minimale App-Größe betrug 10 KB und die Heap-Kapazität 96 KB. Es gibt einen separaten nativen Heap, und es scheint, dass der Speicher auf der Terminalseite ein wenig genutzt werden kann, aber diese Kapazität im reinen Java-Teil.
Die App-Größe ist eine Jar-Datei, die Bytes enthält, die aus Code und Ressourcen wie Bildern kompiliert wurden. Dies war auf 10 KB (10240 Byte) begrenzt.
Sie sind sich dessen vielleicht nur bewusst, also lassen Sie uns überprüfen, wie viel es ist. Es ist jedoch schwierig, eine i-appli-Entwicklungsumgebung zu erstellen, daher werden wir die Android-App-Größen ab August 2020 vergleichen.
Ich denke, ich habe eine App gewählt, die relativ wenige Funktionen zu haben scheint, aber MB-Einheiten sind natürlich. Da Dinge und Zeiten unterschiedlich sind, ist ein allgemeiner Vergleich nicht möglich, aber ich kann mir nicht vorstellen, dass er in 10 KB passt.
Ich weiß, dass die Größe der i-appli extrem streng ist, aber ich frage mich, wie sie hergestellt wurde. Das einzige zu kratzende Element ist das Programm.
Es ist wahr, dass Sie nicht tun können, was Sie wollen, weil Ihnen die Funktionen ausgehen, wenn Sie das Programm ausschneiden, aber es gibt eine Möglichkeit, die Größe zu reduzieren, ohne die Funktionen zu reduzieren. Das heißt, Variablennamen, Klassennamen und Methodennamen werden kleiner.
Der Code ist ziemlich angemessen geschrieben, sieht aber zum Beispiel so aus.
Vorher ändern
public class MainFrame {
private static final String TITLE = "Beispiel App";
private static final String ERROR_MESSAGE = "Ein Fehler ist aufgetreten";
public void showFrame() {
try {
//Einige Verarbeitung
} catch (Exception e) {
showMessage(ERROR_MESSAGE);
}
}
public void showMessage(String message) {
//Verarbeitung der Nachrichtenanzeige
}
}
Nach der veränderung
public class F {
private static final String A = "Beispiel App";
private static final String B = "Ein Fehler ist aufgetreten";
public void s() {
try {
//Einige Verarbeitung
} catch (Exception e) {
m(B);
}
}
public void m(String s) {
//Verarbeitung der Nachrichtenanzeige
}
}
Wenn Sie die Anzahl der Zeichen im Variablennamen und im Methodennamen verringern, verringert sich die Anzahl der in die kompilierte Klassendatei geschriebenen Zeichen, sodass Sie mit einer Verringerung der Größe rechnen können. Auf jeden Fall ist es ein Energiesparprogramm.
Mit einem Programm dieser Größe ist es nicht unlesbar, aber es ist offensichtlich, dass es umso schlimmer wird, je mehr Sie es erstellen. Wie haben Sie dieses Problem behoben?
Nachdem seine Vorgänger seine Weisheit eingegrenzt hatten, entschieden sie sich für etwas, das die Java-Sprache nicht verwendet. Es ist ein Präprozessor, der häufig in C-Sprachen verwendet wird.
Schreiben Sie insbesondere den folgenden Code.
Versionscode des Präprozessors
#define _MainFrame F
#define _TITLE A
#define _ERROR_MESSAGE B
#define _showFrame s
#define _showMessage m
public class _MainFrame {
private static final String _TITLE = "Beispiel App";
private static final String _ERROR_MESSAGE = "Ein Fehler ist aufgetreten";
public void _showFrame() {
try {
//Einige Verarbeitung
} catch (Exception e) {
_showMessage(_ERROR_MESSAGE);
}
}
public void _showMessage(String s) {
//Verarbeitung der Nachrichtenanzeige
}
}
Die folgende Syntax bedeutet, dass der Buchstabe "_MainFrame" in den Buchstaben "F" konvertiert wird.
python
#define _MainFrame F
Dieser Teil ist keine Java-Syntax, daher kann er natürlich nicht vom Java-Compiler kompiliert werden. Gehen wir also den Präprozessor durch. Dann ist der folgende Code abgeschlossen.
public class F {
private final String A = "Beispiel App";
private final String B = "Ein Fehler ist aufgetreten";
public void s() {
try {
//Einige Verarbeitung
} catch (Exception e) {
m(B);
}
}
public void m(String s) {
//Verarbeitung der Nachrichtenanzeige
}
}
Jetzt, da Sie es kompilieren können, müssen Sie es nur noch normal erstellen.
Auf diese Weise können Sie die Größe reduzieren und gleichzeitig die Lesbarkeit verbessern, indem Sie den Code mit Makros in zwei Schritten übergeben: Präprozessor → Java-Compiler. Ich denke, es war schwierig, weil ich die IDE nicht verwenden kann.
Dieser Artikel basiert auf der Idee, einen Präprozessor zu verwenden, den ich vor fast 10 Jahren auf einer anderen Site gesehen habe. Die Seite existiert nicht mehr, aber ich habe sie geschrieben, weil ich die Idee behalten wollte.
Recommended Posts