devel-jb-kotlin-tooling-java-to-kotlin
| | `org.springframework.*` | [SPRING.md](references/frameworks/SPRING.
- License 许可
- MIT
- 最近更新
- 2026-09-01
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- devel-jb-kotlin-tooling-java-to-kotlin
- domain
- cybersecurity
- description
- | | `org.springframework.*` | [SPRING.md](references/frameworks/SPRING.
02 资源文件 19
- 资产文件assets/checklist.md2.5 KB
- 资产文件assets/index.json84 B
- 参考文档index.json1.2 KB
- 参考文档references/CONVERSION-METHODOLOGY.md9.8 KB
- 参考文档references/frameworks/DAGGER-HILT.md4.3 KB
- 参考文档references/frameworks/GUICE.md4.5 KB
- 参考文档references/frameworks/HIBERNATE.md5.9 KB
- 参考文档references/frameworks/index.json84 B
- 参考文档references/frameworks/JACKSON.md7.1 KB
- 参考文档references/frameworks/JUNIT.md5.3 KB
- 参考文档references/frameworks/LOMBOK.md6.3 KB
- 参考文档references/frameworks/MICRONAUT.md3.3 KB
- 参考文档references/frameworks/MOCKITO.md7.7 KB
- 参考文档references/frameworks/QUARKUS.md3.8 KB
- 参考文档references/frameworks/RETROFIT.md4.4 KB
- 参考文档references/frameworks/RXJAVA.md5.6 KB
- 参考文档references/frameworks/SPRING.md6.3 KB
- 参考文档references/index.json416 B
- 参考文档references/KNOWN-ISSUES.md9.5 KB
03 SKILL.md 正文
|
| org.springframework.* | SPRING.md |
| lombok.* | LOMBOK.md |
| javax.persistence.*, jakarta.persistence.*, org.hibernate.* | HIBERNATE.md |
| com.fasterxml.jackson.* | JACKSON.md |
| io.micronaut.* | MICRONAUT.md |
| io.quarkus.*, javax.enterprise.*, jakarta.enterprise.* | QUARKUS.md |
| dagger.*, dagger.hilt.* | DAGGER-HILT.md |
| io.reactivex.*, rx.* | RXJAVA.md |
| org.junit.*, org.testng.* | JUNIT.md |
| com.google.inject.* | GUICE.md |
| retrofit2.*, okhttp3.* | RETROFIT.md |
| org.mockito.* | MOCKITO.md |
If javax.inject.* is detected, check for Dagger/Hilt vs Guice by looking for other
imports from those frameworks. If ambiguous, load both guides.
Step 1: Convert
Apply the conversion methodology from CONVERSION-METHODOLOGY.md.
This is a 4-step chain-of-thought process:
- Faithful 1:1 translation — exact semantics preserved
- Nullability & mutability audit — val/var, nullable types
- Collection type conversion — Java mutable → Kotlin types
- Idiomatic transformations — properties, string templates, lambdas
Five invariants are checked after each step. If any invariant is violated, revert to the previous step and redo.
Apply any loaded framework-specific guidance during step 4 (idiomatic transformations).
Step 2: Write Output
Write the converted Kotlin code to a .kt file with the same name as the original
Java file, in the same directory.
Step 3: Preserve Git History
To preserve git blame history, use a two-phase approach:
# Phase 1: Rename (creates rename tracking)
git mv src/main/java/com/example/Foo.java src/main/kotlin/com/example/Foo.kt
git commit -m "Rename Foo.java to Foo.kt"
# Phase 2: Replace content (tracked as modification, not new file)
# Write the converted Kotlin content to Foo.kt
git commit -m "Convert Foo from Java to Kotlin"
If the project keeps Java and Kotlin in the same source root (e.g., src/main/java/),
rename in place:
git mv src/main/java/com/example/Foo.java src/main/java/com/example/Foo.kt
If the project does not use Git, simply write the .kt file and delete the .java file.
Step 4: Verify
After conversion, verify using checklist.md:
- Attempt to compile the converted file
- Run existing tests
- Check annotation site targets
- Confirm no behavioral changes
Batch Conversion
When converting multiple files (a directory or package):
- List all
.javafiles in the target scope - Sort by dependency order — convert leaf dependencies first (files that don't import other files in the conversion set), then work up to files that depend on them
- Convert one file at a time — apply the full workflow (steps 0-4) for each
- Track progress — report which files are done, which remain
- Handle cross-references — after converting a file, update imports in other Java files if needed (e.g., if a class moved packages)
For large batches, consider converting in packages (bottom-up from leaf packages).
Common Pitfalls
See KNOWN-ISSUES.md for:
- Kotlin keyword conflicts (
when,in,is,object) - SAM conversion ambiguity
- Platform types from Java interop
@JvmStatic/@JvmField/@JvmOverloadsusage- Checked exceptions and
@Throws - Wildcard generics → Kotlin variance
04 同仓库更多 Skills
services-wmi-persistence-detect
Detect WMI event subscription persistence by enumerating ActiveScriptEventConsumer, CommandLineEventConsumer, and permanent subscriptions in the WMI repository.
services-wmi-exec-exploit
Perform lateral movement across Windows networks using WMI-based remote execution techniques including Impacket wmiexec.py, CrackMapExec, and native WMI commands for stealthy post-exploitation during red team engagements.
registry-artifact-extract
Extract and analyze Windows Registry hives to uncover user activity, installed software, autostart entries, and evidence of system compromise.
processes-token-impersonate-detect
Detect Windows token impersonation and privilege abuse including SeImpersonatePrivilege exploitation via Potato attacks and token stealing techniques.
processes-thread-injection-detect
Detect Windows thread injection techniques including CreateRemoteThread, QueueUserAPC, NtCreateThreadEx, and thread hijacking via process memory analysis.
processes-hollow-technique-detect
Detect process hollowing (RunPE) by identifying processes with mismatched image paths between PEB and VAD tree, or unmapped PE headers in memory.