Dokümantasyon

Dokümantasyon/Koruma

Koruma annotation’ları

Tercihlerinizi kodunuzda belirtin. Özel koruma servisi üzerinden uygulayın.

Küçük tanımlar. Hassas kontrol.#

Complexer üç koruma annotation’ı sunar: @Protection, @PerformanceCritical ve @Virtualize. Dönüşüm motorunu uygulamanıza dahil etmeden, seçtiğiniz bölümlere nasıl yaklaşılacağını belirtirler.

Bunlar CLASS düzeyinde saklanan derleme yönergeleridir. Masaüstü istemcisi veya Maven entegrasyonu derlenmiş dosyayı ve yapılandırmayı API’ye gönderir; servis yönergeleri okuyarak seçilen politikayı uygular. Annotation, uygulamanızın çalıştırdığı bir ağ isteği değil, üst veridir. Dağıtılan annotation kütüphanesi özel transformer’ları içermez.

@Protection: politikayı belirleyin#

@Protection sınıf veya metot üzerinde kullanılır. Varsayılan value, ProtectionLevel.NORMAL değeridir. Sınıf, metotlarına varsayılan profili sağlar; metot üzerindeki annotation bu profilin yerini alır. NONE ile işaretlenmiş bir sınıf, bir metot daha güçlü profil istese bile kapsam dışında kalır.

Java
@Protection(value = ProtectionLevel.AGGRESSIVE,
    disable = {ProtectionFamily.FLOW})
final class ReleasePolicy {
    @Protection(ProtectionLevel.LIGHT)
    String displayName() { return "Professional"; }
}
  • NONE: uyumluluk işlemlerine izin verirken koruma kapsamından çıkarır.
  • LIGHT: GENERAL, STRING, NUMBER, KEY, RENAME ve COMPATIBILITY ailelerine izin verir.
  • NORMAL: VM dışındaki tüm ailelere izin verir.
  • AGGRESSIVE: VM dahil tüm ailelere izin verir. Bir ailenin seçilebilir olması, tüm dönüşümlerin etkinleştiği veya her metodun sanallaştırılacağı anlamına gelmez.

Koruma aileleri#

enable ve disable dizileri, seçilen profili ProtectionFamily üzerinden düzenler: GENERAL, STRING, NUMBER, KEY, FLOW, EXCEPTION, VM, INDIRECTION, SHAPE, RENAME ve COMPATIBILITY. disable, enable seçimine göre önceliklidir. İlgili dönüşümün işlem yapılandırmasında da etkin olması gerekir.

Profiller seçimi kontrol eder; şifreleme tur sayısını veya sınıf dosyası sınırlarını keyfî biçimde artırmaz. Böylece koruma tercihi, her sürümün uyması gereken geçerlilik koşullarından ayrı tutulur.

@PerformanceCritical: kritik akışları gözetin#

Sınıf, metot veya constructor üzerinde kullanılır. Varsayılan STRICT politikasında statik dönüşümler seçilebilir kalırken çalışma zamanına ek yük getiren sınıflandırılmış dönüşümler dışlanır. REDUCED, sınırlı miktarda hafif işleme izin verir. Varsayılanı 1 olan maxSites, REDUCED modunda metot başına hafif aritmetik işlem noktalarını sınırlar; STRICT bunu sıfır olarak değerlendirir.

Metot düzeyindeki tanım sınıf politikasını özelleştirebilir; yapılandırma kuralları bunu daha da kısıtlayabilir. Bu annotation kapalı dönüşümleri açmaz ve aynı çalışma süresini garanti etmez; kendi iş yükünüzü ölçün.

Java
@PerformanceCritical
void onTick() { /* application logic */ }

@PerformanceCritical(value = PerformanceCritical.Mode.REDUCED, maxSites = 1)
int calculate(int value) { return value * 31; }

@Virtualize: temsili değiştirin#

Bu işaretleyicinin parametresi yoktur. Tanımlı hedefleri metotlar ve constructor’lardır; sanallaştırma aşaması seçilen her gövdeyi desteklediği JVM alt kümesine göre ayrıca değerlendirir. Daha seyrek çalışan hassas mantık için tasarlanmıştır. Desteklenmeyen kod varsayılan olarak reddedilir. Aşamayı açmak tek başına her metodu sanallaştırmaz.

Sanallaştırma ve performans politikaları, yapılandırılan işlem hattıyla uyumlu olmalıdır. Sık çalışan yolları, bilinçli olarak sanallaştırılan mantıktan ayırın ve dağıtımdan önce korumalı sonucu doğrulayın.

Java
@Protection(ProtectionLevel.AGGRESSIVE)
@Virtualize
boolean validatePolicy(int version) {
    return version >= 21;
}
Ekiple iletişime geçin