workspace-architect 1.4.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/assets-manifest.json +3392 -0
  2. package/bin/cli.js +134 -72
  3. package/package.json +10 -2
  4. package/.env.example +0 -1
  5. package/.gitattributes +0 -1
  6. package/.github/workflows/manual-publish.yml +0 -36
  7. package/.github/workflows/sync-and-publish.yml +0 -58
  8. package/.release-it.json +0 -20
  9. package/CHANGELOG.md +0 -53
  10. package/assets/chatmodes/4.1-Beast.chatmode.md +0 -152
  11. package/assets/chatmodes/Thinking-Beast-Mode.chatmode.md +0 -337
  12. package/assets/chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md +0 -644
  13. package/assets/chatmodes/accessibility.chatmode.md +0 -298
  14. package/assets/chatmodes/address-comments.chatmode.md +0 -59
  15. package/assets/chatmodes/aem-frontend-specialist.chatmode.md +0 -385
  16. package/assets/chatmodes/api-architect.chatmode.md +0 -40
  17. package/assets/chatmodes/atlassian-requirements-to-jira.chatmode.md +0 -444
  18. package/assets/chatmodes/azure-logic-apps-expert.chatmode.md +0 -100
  19. package/assets/chatmodes/azure-principal-architect.chatmode.md +0 -58
  20. package/assets/chatmodes/azure-saas-architect.chatmode.md +0 -118
  21. package/assets/chatmodes/azure-verified-modules-bicep.chatmode.md +0 -44
  22. package/assets/chatmodes/azure-verified-modules-terraform.chatmode.md +0 -58
  23. package/assets/chatmodes/bicep-implement.chatmode.md +0 -40
  24. package/assets/chatmodes/bicep-plan.chatmode.md +0 -112
  25. package/assets/chatmodes/blueprint-mode-codex.chatmode.md +0 -110
  26. package/assets/chatmodes/blueprint-mode.chatmode.md +0 -171
  27. package/assets/chatmodes/clojure-interactive-programming.chatmode.md +0 -174
  28. package/assets/chatmodes/code-tour.chatmode.md +0 -205
  29. package/assets/chatmodes/critical-thinking.chatmode.md +0 -23
  30. package/assets/chatmodes/csharp-dotnet-janitor.chatmode.md +0 -83
  31. package/assets/chatmodes/csharp-mcp-expert.chatmode.md +0 -69
  32. package/assets/chatmodes/debug.chatmode.md +0 -79
  33. package/assets/chatmodes/declarative-agents-architect.chatmode.md +0 -76
  34. package/assets/chatmodes/demonstrate-understanding.chatmode.md +0 -60
  35. package/assets/chatmodes/dotnet-upgrade.chatmode.md +0 -222
  36. package/assets/chatmodes/drupal-expert.chatmode.md +0 -687
  37. package/assets/chatmodes/electron-angular-native.chatmode.md +0 -285
  38. package/assets/chatmodes/expert-cpp-software-engineer.chatmode.md +0 -27
  39. package/assets/chatmodes/expert-dotnet-software-engineer.chatmode.md +0 -22
  40. package/assets/chatmodes/expert-nextjs-developer.chatmode.md +0 -477
  41. package/assets/chatmodes/expert-react-frontend-engineer.chatmode.md +0 -738
  42. package/assets/chatmodes/gilfoyle.chatmode.md +0 -66
  43. package/assets/chatmodes/go-mcp-expert.chatmode.md +0 -122
  44. package/assets/chatmodes/gpt-5-beast-mode.chatmode.md +0 -109
  45. package/assets/chatmodes/hlbpa.chatmode.md +0 -232
  46. package/assets/chatmodes/implementation-plan.chatmode.md +0 -159
  47. package/assets/chatmodes/janitor.chatmode.md +0 -89
  48. package/assets/chatmodes/java-mcp-expert.chatmode.md +0 -325
  49. package/assets/chatmodes/kotlin-mcp-expert.chatmode.md +0 -181
  50. package/assets/chatmodes/kusto-assistant.chatmode.md +0 -143
  51. package/assets/chatmodes/laravel-expert-agent.chatmode.md +0 -628
  52. package/assets/chatmodes/mentor.chatmode.md +0 -32
  53. package/assets/chatmodes/meta-agentic-project-scaffold.chatmode.md +0 -15
  54. package/assets/chatmodes/microsoft-agent-framework-dotnet.chatmode.md +0 -62
  55. package/assets/chatmodes/microsoft-agent-framework-python.chatmode.md +0 -62
  56. package/assets/chatmodes/microsoft-study-mode.chatmode.md +0 -32
  57. package/assets/chatmodes/microsoft_learn_contributor.chatmode.md +0 -388
  58. package/assets/chatmodes/ms-sql-dba.chatmode.md +0 -25
  59. package/assets/chatmodes/php-mcp-expert.chatmode.md +0 -498
  60. package/assets/chatmodes/pimcore-expert.chatmode.md +0 -869
  61. package/assets/chatmodes/plan.chatmode.md +0 -114
  62. package/assets/chatmodes/planner.chatmode.md +0 -14
  63. package/assets/chatmodes/playwright-tester.chatmode.md +0 -13
  64. package/assets/chatmodes/postgresql-dba.chatmode.md +0 -17
  65. package/assets/chatmodes/power-bi-data-modeling-expert.chatmode.md +0 -319
  66. package/assets/chatmodes/power-bi-dax-expert.chatmode.md +0 -334
  67. package/assets/chatmodes/power-bi-performance-expert.chatmode.md +0 -533
  68. package/assets/chatmodes/power-bi-visualization-expert.chatmode.md +0 -549
  69. package/assets/chatmodes/power-platform-expert.chatmode.md +0 -116
  70. package/assets/chatmodes/power-platform-mcp-integration-expert.chatmode.md +0 -149
  71. package/assets/chatmodes/prd.chatmode.md +0 -201
  72. package/assets/chatmodes/principal-software-engineer.chatmode.md +0 -41
  73. package/assets/chatmodes/prompt-builder.chatmode.md +0 -352
  74. package/assets/chatmodes/prompt-engineer.chatmode.md +0 -72
  75. package/assets/chatmodes/python-mcp-expert.chatmode.md +0 -99
  76. package/assets/chatmodes/refine-issue.chatmode.md +0 -34
  77. package/assets/chatmodes/research-technical-spike.chatmode.md +0 -169
  78. package/assets/chatmodes/ruby-mcp-expert.chatmode.md +0 -346
  79. package/assets/chatmodes/rust-gpt-4.1-beast-mode.chatmode.md +0 -197
  80. package/assets/chatmodes/rust-mcp-expert.chatmode.md +0 -465
  81. package/assets/chatmodes/search-ai-optimization-expert.chatmode.md +0 -227
  82. package/assets/chatmodes/semantic-kernel-dotnet.chatmode.md +0 -31
  83. package/assets/chatmodes/semantic-kernel-python.chatmode.md +0 -28
  84. package/assets/chatmodes/shopify-expert.chatmode.md +0 -681
  85. package/assets/chatmodes/simple-app-idea-generator.chatmode.md +0 -134
  86. package/assets/chatmodes/software-engineer-agent-v1.chatmode.md +0 -164
  87. package/assets/chatmodes/specification.chatmode.md +0 -127
  88. package/assets/chatmodes/swift-mcp-expert.chatmode.md +0 -240
  89. package/assets/chatmodes/task-planner.chatmode.md +0 -374
  90. package/assets/chatmodes/task-researcher.chatmode.md +0 -254
  91. package/assets/chatmodes/tdd-green.chatmode.md +0 -59
  92. package/assets/chatmodes/tdd-red.chatmode.md +0 -59
  93. package/assets/chatmodes/tdd-refactor.chatmode.md +0 -84
  94. package/assets/chatmodes/tech-debt-remediation-plan.chatmode.md +0 -49
  95. package/assets/chatmodes/terraform-azure-implement.chatmode.md +0 -104
  96. package/assets/chatmodes/terraform-azure-planning.chatmode.md +0 -157
  97. package/assets/chatmodes/typescript-mcp-expert.chatmode.md +0 -91
  98. package/assets/chatmodes/voidbeast-gpt41enhanced.chatmode.md +0 -230
  99. package/assets/chatmodes/wg-code-alchemist.chatmode.md +0 -61
  100. package/assets/chatmodes/wg-code-sentinel.chatmode.md +0 -55
  101. package/assets/collections/ai-prompt-engineering.json +0 -95
  102. package/assets/collections/angular-development.json +0 -19
  103. package/assets/collections/azure-cloud-architect.json +0 -150
  104. package/assets/collections/cpp-development.json +0 -4
  105. package/assets/collections/database-administration.json +0 -13
  106. package/assets/collections/devops-sre.json +0 -33
  107. package/assets/collections/dotnet-development.json +0 -114
  108. package/assets/collections/general-productivity.json +0 -4
  109. package/assets/collections/go-development.json +0 -42
  110. package/assets/collections/java-spring-developer.json +0 -111
  111. package/assets/collections/learning-mentoring.json +0 -9
  112. package/assets/collections/legacy-migration.json +0 -6
  113. package/assets/collections/mcp-specialist.json +0 -92
  114. package/assets/collections/mobile-development.json +0 -12
  115. package/assets/collections/php-cms-development.json +0 -68
  116. package/assets/collections/power-platform-specialist.json +0 -128
  117. package/assets/collections/project-management.json +0 -50
  118. package/assets/collections/python-development.json +0 -66
  119. package/assets/collections/quality-assurance.json +0 -56
  120. package/assets/collections/ruby-development.json +0 -43
  121. package/assets/collections/rust-development.json +0 -63
  122. package/assets/collections/security-specialist.json +0 -65
  123. package/assets/collections/software-architect.json +0 -85
  124. package/assets/collections/technical-writing.json +0 -23
  125. package/assets/collections/web-frontend-development.json +0 -52
  126. package/assets/instructions/a11y.instructions.md +0 -369
  127. package/assets/instructions/ai-prompt-engineering-safety-best-practices.instructions.md +0 -867
  128. package/assets/instructions/angular.instructions.md +0 -104
  129. package/assets/instructions/ansible.instructions.md +0 -88
  130. package/assets/instructions/aspnet-rest-apis.instructions.md +0 -110
  131. package/assets/instructions/astro.instructions.md +0 -182
  132. package/assets/instructions/azure-devops-pipelines.instructions.md +0 -185
  133. package/assets/instructions/azure-functions-typescript.instructions.md +0 -14
  134. package/assets/instructions/azure-logic-apps-power-automate.instructions.md +0 -1943
  135. package/assets/instructions/azure-verified-modules-terraform.instructions.md +0 -229
  136. package/assets/instructions/bicep-code-best-practices.instructions.md +0 -54
  137. package/assets/instructions/blazor.instructions.md +0 -77
  138. package/assets/instructions/clojure.instructions.md +0 -349
  139. package/assets/instructions/cmake-vcpkg.instructions.md +0 -10
  140. package/assets/instructions/codexer.instructions.md +0 -428
  141. package/assets/instructions/coldfusion-cfc.instructions.md +0 -30
  142. package/assets/instructions/coldfusion-cfm.instructions.md +0 -28
  143. package/assets/instructions/collections.instructions.md +0 -54
  144. package/assets/instructions/containerization-docker-best-practices.instructions.md +0 -681
  145. package/assets/instructions/convert-jpa-to-spring-data-cosmos.instructions.md +0 -949
  146. package/assets/instructions/copilot-thought-logging.instructions.md +0 -62
  147. package/assets/instructions/csharp-ja.instructions.md +0 -114
  148. package/assets/instructions/csharp-ko.instructions.md +0 -77
  149. package/assets/instructions/csharp-mcp-server.instructions.md +0 -95
  150. package/assets/instructions/csharp.instructions.md +0 -114
  151. package/assets/instructions/dart-n-flutter.instructions.md +0 -447
  152. package/assets/instructions/declarative-agents-microsoft365.instructions.md +0 -316
  153. package/assets/instructions/devbox-image-definition.instructions.md +0 -302
  154. package/assets/instructions/devops-core-principles.instructions.md +0 -167
  155. package/assets/instructions/dotnet-architecture-good-practices.instructions.md +0 -279
  156. package/assets/instructions/dotnet-framework.instructions.md +0 -113
  157. package/assets/instructions/dotnet-maui-9-to-dotnet-maui-10-upgrade.instructions.md +0 -1922
  158. package/assets/instructions/dotnet-maui.instructions.md +0 -69
  159. package/assets/instructions/dotnet-upgrade.instructions.md +0 -287
  160. package/assets/instructions/dotnet-wpf.instructions.md +0 -79
  161. package/assets/instructions/genaiscript.instructions.md +0 -21
  162. package/assets/instructions/generate-modern-terraform-code-for-azure.instructions.md +0 -82
  163. package/assets/instructions/gilfoyle-code-review.instructions.md +0 -114
  164. package/assets/instructions/github-actions-ci-cd-best-practices.instructions.md +0 -607
  165. package/assets/instructions/go-mcp-server.instructions.md +0 -346
  166. package/assets/instructions/go.instructions.md +0 -373
  167. package/assets/instructions/instructions.instructions.md +0 -256
  168. package/assets/instructions/java-11-to-java-17-upgrade.instructions.md +0 -793
  169. package/assets/instructions/java-17-to-java-21-upgrade.instructions.md +0 -464
  170. package/assets/instructions/java-21-to-java-25-upgrade.instructions.md +0 -311
  171. package/assets/instructions/java-mcp-server.instructions.md +0 -553
  172. package/assets/instructions/java.instructions.md +0 -81
  173. package/assets/instructions/joyride-user-project.instructions.md +0 -206
  174. package/assets/instructions/joyride-workspace-automation.instructions.md +0 -46
  175. package/assets/instructions/kotlin-mcp-server.instructions.md +0 -481
  176. package/assets/instructions/kubernetes-deployment-best-practices.instructions.md +0 -307
  177. package/assets/instructions/langchain-python.instructions.md +0 -229
  178. package/assets/instructions/localization.instructions.md +0 -39
  179. package/assets/instructions/makefile.instructions.md +0 -410
  180. package/assets/instructions/markdown.instructions.md +0 -52
  181. package/assets/instructions/memory-bank.instructions.md +0 -299
  182. package/assets/instructions/mongo-dba.instructions.md +0 -25
  183. package/assets/instructions/ms-sql-dba.instructions.md +0 -25
  184. package/assets/instructions/nestjs.instructions.md +0 -406
  185. package/assets/instructions/nextjs-tailwind.instructions.md +0 -72
  186. package/assets/instructions/nextjs.instructions.md +0 -143
  187. package/assets/instructions/nodejs-javascript-vitest.instructions.md +0 -30
  188. package/assets/instructions/object-calisthenics.instructions.md +0 -302
  189. package/assets/instructions/oqtane.instructions.md +0 -86
  190. package/assets/instructions/performance-optimization.instructions.md +0 -420
  191. package/assets/instructions/php-mcp-server.instructions.md +0 -809
  192. package/assets/instructions/playwright-dotnet.instructions.md +0 -101
  193. package/assets/instructions/playwright-python.instructions.md +0 -62
  194. package/assets/instructions/playwright-typescript.instructions.md +0 -86
  195. package/assets/instructions/power-apps-canvas-yaml.instructions.md +0 -827
  196. package/assets/instructions/power-apps-code-apps.instructions.md +0 -601
  197. package/assets/instructions/power-bi-custom-visuals-development.instructions.md +0 -810
  198. package/assets/instructions/power-bi-data-modeling-best-practices.instructions.md +0 -639
  199. package/assets/instructions/power-bi-dax-best-practices.instructions.md +0 -795
  200. package/assets/instructions/power-bi-devops-alm-best-practices.instructions.md +0 -623
  201. package/assets/instructions/power-bi-report-design-best-practices.instructions.md +0 -752
  202. package/assets/instructions/power-bi-security-rls-best-practices.instructions.md +0 -504
  203. package/assets/instructions/power-platform-connector.instructions.md +0 -430
  204. package/assets/instructions/power-platform-mcp-development.instructions.md +0 -88
  205. package/assets/instructions/powershell-pester-5.instructions.md +0 -197
  206. package/assets/instructions/powershell.instructions.md +0 -356
  207. package/assets/instructions/prompt.instructions.md +0 -73
  208. package/assets/instructions/python-mcp-server.instructions.md +0 -204
  209. package/assets/instructions/python.instructions.md +0 -56
  210. package/assets/instructions/quarkus-mcp-server-sse.instructions.md +0 -49
  211. package/assets/instructions/quarkus.instructions.md +0 -98
  212. package/assets/instructions/r.instructions.md +0 -116
  213. package/assets/instructions/reactjs.instructions.md +0 -162
  214. package/assets/instructions/ruby-mcp-server.instructions.md +0 -629
  215. package/assets/instructions/ruby-on-rails.instructions.md +0 -124
  216. package/assets/instructions/rust-mcp-server.instructions.md +0 -715
  217. package/assets/instructions/rust.instructions.md +0 -135
  218. package/assets/instructions/security-and-owasp.instructions.md +0 -51
  219. package/assets/instructions/self-explanatory-code-commenting.instructions.md +0 -162
  220. package/assets/instructions/shell.instructions.md +0 -132
  221. package/assets/instructions/spec-driven-workflow-v1.instructions.md +0 -323
  222. package/assets/instructions/springboot.instructions.md +0 -68
  223. package/assets/instructions/sql-sp-generation.instructions.md +0 -74
  224. package/assets/instructions/svelte.instructions.md +0 -161
  225. package/assets/instructions/swift-mcp-server.instructions.md +0 -498
  226. package/assets/instructions/taming-copilot.instructions.md +0 -40
  227. package/assets/instructions/tanstack-start-shadcn-tailwind.instructions.md +0 -212
  228. package/assets/instructions/task-implementation.instructions.md +0 -190
  229. package/assets/instructions/tasksync.instructions.md +0 -352
  230. package/assets/instructions/terraform-azure.instructions.md +0 -254
  231. package/assets/instructions/terraform-sap-btp.instructions.md +0 -195
  232. package/assets/instructions/terraform.instructions.md +0 -113
  233. package/assets/instructions/typescript-5-es2022.instructions.md +0 -114
  234. package/assets/instructions/typescript-mcp-server.instructions.md +0 -228
  235. package/assets/instructions/update-code-from-shorthand.instructions.md +0 -130
  236. package/assets/instructions/vuejs3.instructions.md +0 -153
  237. package/assets/instructions/wordpress.instructions.md +0 -186
  238. package/assets/prompts/add-educational-comments.prompt.md +0 -129
  239. package/assets/prompts/ai-prompt-engineering-safety-review.prompt.md +0 -230
  240. package/assets/prompts/architecture-blueprint-generator.prompt.md +0 -322
  241. package/assets/prompts/aspnet-minimal-api-openapi.prompt.md +0 -42
  242. package/assets/prompts/az-cost-optimize.prompt.md +0 -305
  243. package/assets/prompts/azure-resource-health-diagnose.prompt.md +0 -290
  244. package/assets/prompts/boost-prompt.prompt.md +0 -25
  245. package/assets/prompts/breakdown-epic-arch.prompt.md +0 -66
  246. package/assets/prompts/breakdown-epic-pm.prompt.md +0 -58
  247. package/assets/prompts/breakdown-feature-implementation.prompt.md +0 -128
  248. package/assets/prompts/breakdown-feature-prd.prompt.md +0 -61
  249. package/assets/prompts/breakdown-plan.prompt.md +0 -509
  250. package/assets/prompts/breakdown-test.prompt.md +0 -365
  251. package/assets/prompts/code-exemplars-blueprint-generator.prompt.md +0 -126
  252. package/assets/prompts/comment-code-generate-a-tutorial.prompt.md +0 -26
  253. package/assets/prompts/containerize-aspnet-framework.prompt.md +0 -455
  254. package/assets/prompts/containerize-aspnetcore.prompt.md +0 -393
  255. package/assets/prompts/conventional-commit.prompt.md +0 -73
  256. package/assets/prompts/copilot-instructions-blueprint-generator.prompt.md +0 -294
  257. package/assets/prompts/cosmosdb-datamodeling.prompt.md +0 -1045
  258. package/assets/prompts/create-agentsmd.prompt.md +0 -249
  259. package/assets/prompts/create-architectural-decision-record.prompt.md +0 -97
  260. package/assets/prompts/create-github-action-workflow-specification.prompt.md +0 -276
  261. package/assets/prompts/create-github-issue-feature-from-specification.prompt.md +0 -28
  262. package/assets/prompts/create-github-issues-feature-from-implementation-plan.prompt.md +0 -28
  263. package/assets/prompts/create-github-issues-for-unmet-specification-requirements.prompt.md +0 -35
  264. package/assets/prompts/create-github-pull-request-from-specification.prompt.md +0 -24
  265. package/assets/prompts/create-implementation-plan.prompt.md +0 -157
  266. package/assets/prompts/create-llms.prompt.md +0 -210
  267. package/assets/prompts/create-oo-component-documentation.prompt.md +0 -193
  268. package/assets/prompts/create-readme.prompt.md +0 -21
  269. package/assets/prompts/create-specification.prompt.md +0 -127
  270. package/assets/prompts/create-spring-boot-java-project.prompt.md +0 -163
  271. package/assets/prompts/create-spring-boot-kotlin-project.prompt.md +0 -147
  272. package/assets/prompts/create-technical-spike.prompt.md +0 -231
  273. package/assets/prompts/csharp-async.prompt.md +0 -50
  274. package/assets/prompts/csharp-docs.prompt.md +0 -63
  275. package/assets/prompts/csharp-mcp-server-generator.prompt.md +0 -59
  276. package/assets/prompts/csharp-mstest.prompt.md +0 -67
  277. package/assets/prompts/csharp-nunit.prompt.md +0 -72
  278. package/assets/prompts/csharp-tunit.prompt.md +0 -101
  279. package/assets/prompts/csharp-xunit.prompt.md +0 -69
  280. package/assets/prompts/declarative-agents.prompt.md +0 -93
  281. package/assets/prompts/documentation-writer.prompt.md +0 -46
  282. package/assets/prompts/dotnet-best-practices.prompt.md +0 -84
  283. package/assets/prompts/dotnet-design-pattern-review.prompt.md +0 -41
  284. package/assets/prompts/dotnet-upgrade.prompt.md +0 -116
  285. package/assets/prompts/editorconfig.prompt.md +0 -64
  286. package/assets/prompts/ef-core.prompt.md +0 -76
  287. package/assets/prompts/finalize-agent-prompt.prompt.md +0 -27
  288. package/assets/prompts/first-ask.prompt.md +0 -29
  289. package/assets/prompts/folder-structure-blueprint-generator.prompt.md +0 -405
  290. package/assets/prompts/gen-specs-as-issues.prompt.md +0 -165
  291. package/assets/prompts/generate-custom-instructions-from-codebase.prompt.md +0 -240
  292. package/assets/prompts/git-flow-branch-creator.prompt.md +0 -293
  293. package/assets/prompts/github-copilot-starter.prompt.md +0 -372
  294. package/assets/prompts/go-mcp-server-generator.prompt.md +0 -334
  295. package/assets/prompts/java-docs.prompt.md +0 -24
  296. package/assets/prompts/java-junit.prompt.md +0 -64
  297. package/assets/prompts/java-mcp-server-generator.prompt.md +0 -756
  298. package/assets/prompts/java-refactoring-extract-method.prompt.md +0 -105
  299. package/assets/prompts/java-refactoring-remove-parameter.prompt.md +0 -85
  300. package/assets/prompts/java-springboot.prompt.md +0 -66
  301. package/assets/prompts/javascript-typescript-jest.prompt.md +0 -44
  302. package/assets/prompts/kotlin-mcp-server-generator.prompt.md +0 -449
  303. package/assets/prompts/kotlin-springboot.prompt.md +0 -71
  304. package/assets/prompts/mcp-copilot-studio-server-generator.prompt.md +0 -118
  305. package/assets/prompts/memory-merger.prompt.md +0 -107
  306. package/assets/prompts/mkdocs-translations.prompt.md +0 -110
  307. package/assets/prompts/model-recommendation.prompt.md +0 -677
  308. package/assets/prompts/multi-stage-dockerfile.prompt.md +0 -47
  309. package/assets/prompts/my-issues.prompt.md +0 -9
  310. package/assets/prompts/my-pull-requests.prompt.md +0 -15
  311. package/assets/prompts/next-intl-add-language.prompt.md +0 -20
  312. package/assets/prompts/php-mcp-server-generator.prompt.md +0 -522
  313. package/assets/prompts/playwright-automation-fill-in-form.prompt.md +0 -30
  314. package/assets/prompts/playwright-explore-website.prompt.md +0 -19
  315. package/assets/prompts/playwright-generate-test.prompt.md +0 -19
  316. package/assets/prompts/postgresql-code-review.prompt.md +0 -214
  317. package/assets/prompts/postgresql-optimization.prompt.md +0 -406
  318. package/assets/prompts/power-apps-code-app-scaffold.prompt.md +0 -150
  319. package/assets/prompts/power-bi-dax-optimization.prompt.md +0 -175
  320. package/assets/prompts/power-bi-model-design-review.prompt.md +0 -405
  321. package/assets/prompts/power-bi-performance-troubleshooting.prompt.md +0 -384
  322. package/assets/prompts/power-bi-report-design-consultation.prompt.md +0 -353
  323. package/assets/prompts/power-platform-mcp-connector-suite.prompt.md +0 -156
  324. package/assets/prompts/project-workflow-analysis-blueprint-generator.prompt.md +0 -294
  325. package/assets/prompts/prompt-builder.prompt.md +0 -142
  326. package/assets/prompts/pytest-coverage.prompt.md +0 -28
  327. package/assets/prompts/python-mcp-server-generator.prompt.md +0 -105
  328. package/assets/prompts/readme-blueprint-generator.prompt.md +0 -79
  329. package/assets/prompts/remember-interactive-programming.prompt.md +0 -13
  330. package/assets/prompts/remember.prompt.md +0 -125
  331. package/assets/prompts/repo-story-time.prompt.md +0 -156
  332. package/assets/prompts/review-and-refactor.prompt.md +0 -15
  333. package/assets/prompts/ruby-mcp-server-generator.prompt.md +0 -660
  334. package/assets/prompts/rust-mcp-server-generator.prompt.md +0 -578
  335. package/assets/prompts/shuffle-json-data.prompt.md +0 -151
  336. package/assets/prompts/sql-code-review.prompt.md +0 -303
  337. package/assets/prompts/sql-optimization.prompt.md +0 -298
  338. package/assets/prompts/suggest-awesome-github-copilot-agents.prompt.md +0 -72
  339. package/assets/prompts/suggest-awesome-github-copilot-chatmodes.prompt.md +0 -71
  340. package/assets/prompts/suggest-awesome-github-copilot-collections.prompt.md +0 -149
  341. package/assets/prompts/suggest-awesome-github-copilot-instructions.prompt.md +0 -88
  342. package/assets/prompts/suggest-awesome-github-copilot-prompts.prompt.md +0 -71
  343. package/assets/prompts/swift-mcp-server-generator.prompt.md +0 -669
  344. package/assets/prompts/technology-stack-blueprint-generator.prompt.md +0 -242
  345. package/assets/prompts/typescript-mcp-server-generator.prompt.md +0 -90
  346. package/assets/prompts/update-avm-modules-in-bicep.prompt.md +0 -60
  347. package/assets/prompts/update-implementation-plan.prompt.md +0 -157
  348. package/assets/prompts/update-llms.prompt.md +0 -216
  349. package/assets/prompts/update-markdown-file-index.prompt.md +0 -76
  350. package/assets/prompts/update-oo-component-documentation.prompt.md +0 -162
  351. package/assets/prompts/update-specification.prompt.md +0 -127
  352. package/assets/prompts/write-coding-standards-from-file.prompt.md +0 -316
  353. package/scripts/analyze-collections.js +0 -387
  354. package/scripts/sync.js +0 -99
  355. package/verdaccio/config.yaml +0 -202
@@ -1,793 +0,0 @@
1
- ---
2
- applyTo: ["*"]
3
- description: "Comprehensive best practices for adopting new Java 17 features since the release of Java 11."
4
- ---
5
-
6
- # Java 11 to Java 17 Upgrade Guide
7
-
8
- ## Project Context
9
-
10
- This guide provides comprehensive GitHub Copilot instructions for upgrading Java projects from JDK 11 to JDK 17, covering major language features, API changes, and migration patterns based on 47 JEPs integrated between these versions.
11
-
12
- ## Language Features and API Changes
13
-
14
- ### JEP 395: Records (Java 16)
15
-
16
- **Migration Pattern**: Convert data classes to records
17
-
18
- ```java
19
- // Old: Traditional data class
20
- public class Person {
21
- private final String name;
22
- private final int age;
23
-
24
- public Person(String name, int age) {
25
- this.name = name;
26
- this.age = age;
27
- }
28
-
29
- public String name() { return name; }
30
- public int age() { return age; }
31
-
32
- @Override
33
- public boolean equals(Object obj) { /* boilerplate */ }
34
- @Override
35
- public int hashCode() { /* boilerplate */ }
36
- @Override
37
- public String toString() { /* boilerplate */ }
38
- }
39
-
40
- // New: Record (Java 16+)
41
- public record Person(String name, int age) {
42
- // Compact constructor for validation
43
- public Person {
44
- if (age < 0) throw new IllegalArgumentException("Age cannot be negative");
45
- }
46
-
47
- // Custom methods can be added
48
- public boolean isAdult() {
49
- return age >= 18;
50
- }
51
- }
52
- ```
53
-
54
- ### JEP 409: Sealed Classes (Java 17)
55
-
56
- **Migration Pattern**: Use sealed classes for restricted inheritance
57
-
58
- ```java
59
- // New: Sealed class hierarchy
60
- public sealed class Shape
61
- permits Circle, Rectangle, Triangle {
62
-
63
- public abstract double area();
64
- }
65
-
66
- public final class Circle extends Shape {
67
- private final double radius;
68
-
69
- public Circle(double radius) {
70
- this.radius = radius;
71
- }
72
-
73
- @Override
74
- public double area() {
75
- return Math.PI * radius * radius;
76
- }
77
- }
78
-
79
- public final class Rectangle extends Shape {
80
- private final double width, height;
81
-
82
- public Rectangle(double width, double height) {
83
- this.width = width;
84
- this.height = height;
85
- }
86
-
87
- @Override
88
- public double area() {
89
- return width * height;
90
- }
91
- }
92
-
93
- public non-sealed class Triangle extends Shape {
94
- // Non-sealed allows further inheritance
95
- private final double base, height;
96
-
97
- public Triangle(double base, double height) {
98
- this.base = base;
99
- this.height = height;
100
- }
101
-
102
- @Override
103
- public double area() {
104
- return 0.5 * base * height;
105
- }
106
- }
107
- ```
108
-
109
- ### JEP 394: Pattern Matching for instanceof (Java 16)
110
-
111
- **Migration Pattern**: Simplify instanceof checks
112
-
113
- ```java
114
- // Old: Traditional instanceof with casting
115
- public String processObject(Object obj) {
116
- if (obj instanceof String) {
117
- String str = (String) obj;
118
- return str.toUpperCase();
119
- } else if (obj instanceof Integer) {
120
- Integer num = (Integer) obj;
121
- return "Number: " + num;
122
- } else if (obj instanceof List<?>) {
123
- List<?> list = (List<?>) obj;
124
- return "List with " + list.size() + " elements";
125
- }
126
- return "Unknown type";
127
- }
128
-
129
- // New: Pattern matching for instanceof (Java 16+)
130
- public String processObject(Object obj) {
131
- if (obj instanceof String str) {
132
- return str.toUpperCase();
133
- } else if (obj instanceof Integer num) {
134
- return "Number: " + num;
135
- } else if (obj instanceof List<?> list) {
136
- return "List with " + list.size() + " elements";
137
- }
138
- return "Unknown type";
139
- }
140
-
141
- // Works great with sealed classes
142
- public String describeShape(Shape shape) {
143
- if (shape instanceof Circle circle) {
144
- return "Circle with radius " + circle.radius();
145
- } else if (shape instanceof Rectangle rect) {
146
- return "Rectangle " + rect.width() + "x" + rect.height();
147
- } else if (shape instanceof Triangle triangle) {
148
- return "Triangle with base " + triangle.base();
149
- }
150
- return "Unknown shape";
151
- }
152
- ```
153
-
154
- ### JEP 361: Switch Expressions (Java 14)
155
-
156
- **Migration Pattern**: Convert switch statements to expressions
157
-
158
- ```java
159
- // Old: Traditional switch statement
160
- public String getDayType(DayOfWeek day) {
161
- String result;
162
- switch (day) {
163
- case MONDAY:
164
- case TUESDAY:
165
- case WEDNESDAY:
166
- case THURSDAY:
167
- case FRIDAY:
168
- result = "Workday";
169
- break;
170
- case SATURDAY:
171
- case SUNDAY:
172
- result = "Weekend";
173
- break;
174
- default:
175
- throw new IllegalArgumentException("Unknown day: " + day);
176
- }
177
- return result;
178
- }
179
-
180
- // New: Switch expression (Java 14+)
181
- public String getDayType(DayOfWeek day) {
182
- return switch (day) {
183
- case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> "Workday";
184
- case SATURDAY, SUNDAY -> "Weekend";
185
- };
186
- }
187
-
188
- // With yield for complex logic
189
- public int calculateScore(Grade grade) {
190
- return switch (grade) {
191
- case A -> 100;
192
- case B -> 85;
193
- case C -> 70;
194
- case D -> {
195
- System.out.println("Consider improvement");
196
- yield 55;
197
- }
198
- case F -> {
199
- System.out.println("Needs retake");
200
- yield 0;
201
- }
202
- };
203
- }
204
- ```
205
-
206
- ### JEP 406: Pattern Matching for switch (Preview in Java 17)
207
-
208
- **Migration Pattern**: Enhanced switch with patterns (Preview feature)
209
-
210
- ```java
211
- // Requires --enable-preview flag
212
- public String formatValue(Object obj) {
213
- return switch (obj) {
214
- case String s -> "String: " + s;
215
- case Integer i -> "Integer: " + i;
216
- case null -> "null value";
217
- case default -> "Unknown: " + obj.getClass().getSimpleName();
218
- };
219
- }
220
-
221
- // With guarded patterns
222
- public String categorizeNumber(Object obj) {
223
- return switch (obj) {
224
- case Integer i when i < 0 -> "Negative integer";
225
- case Integer i when i == 0 -> "Zero";
226
- case Integer i when i > 0 -> "Positive integer";
227
- case Double d when d.isNaN() -> "Not a number";
228
- case Number n -> "Other number: " + n;
229
- case null -> "null";
230
- case default -> "Not a number";
231
- };
232
- }
233
- ```
234
-
235
- ### JEP 378: Text Blocks (Java 15)
236
-
237
- **Migration Pattern**: Use text blocks for multi-line strings
238
-
239
- ```java
240
- // Old: Concatenated strings
241
- String html = "<html>\n" +
242
- " <body>\n" +
243
- " <h1>Hello World</h1>\n" +
244
- " <p>Welcome to Java 17!</p>\n" +
245
- " </body>\n" +
246
- "</html>";
247
-
248
- String sql = "SELECT p.id, p.name, p.email, " +
249
- " a.street, a.city, a.state " +
250
- "FROM person p " +
251
- "JOIN address a ON p.address_id = a.id " +
252
- "WHERE p.active = true " +
253
- "ORDER BY p.name";
254
-
255
- // New: Text blocks (Java 15+)
256
- String html = """
257
- <html>
258
- <body>
259
- <h1>Hello World</h1>
260
- <p>Welcome to Java 17!</p>
261
- </body>
262
- </html>
263
- """;
264
-
265
- String sql = """
266
- SELECT p.id, p.name, p.email,
267
- a.street, a.city, a.state
268
- FROM person p
269
- JOIN address a ON p.address_id = a.id
270
- WHERE p.active = true
271
- ORDER BY p.name
272
- """;
273
-
274
- // With string interpolation methods
275
- String json = """
276
- {
277
- "name": "%s",
278
- "age": %d,
279
- "city": "%s"
280
- }
281
- """.formatted(name, age, city);
282
- ```
283
-
284
- ### JEP 358: Helpful NullPointerExceptions (Java 14)
285
-
286
- **Migration Guidance**: Better NPE debugging (enabled by default in Java 17)
287
-
288
- ```java
289
- // Old NPE message: "Exception in thread 'main' java.lang.NullPointerException"
290
- // New NPE message shows exactly what was null:
291
- // "Cannot invoke 'String.length()' because the return value of 'Person.getName()' is null"
292
-
293
- public class PersonProcessor {
294
- public void processPersons(List<Person> persons) {
295
- // This will show exactly which person.getName() returned null
296
- persons.stream()
297
- .mapToInt(person -> person.getName().length()) // Clear NPE if getName() returns null
298
- .sum();
299
- }
300
-
301
- // Better error messages help with complex expressions
302
- public void complexExample(Map<String, List<Person>> groups) {
303
- // NPE will show exactly which part of the chain is null
304
- int totalNameLength = groups.get("admins")
305
- .get(0)
306
- .getName()
307
- .length();
308
- }
309
- }
310
- ```
311
-
312
- ### JEP 371: Hidden Classes (Java 15)
313
-
314
- **Migration Pattern**: Use for framework and proxy generation
315
-
316
- ```java
317
- // For frameworks creating dynamic proxies
318
- public class DynamicProxyExample {
319
- public static <T> T createProxy(Class<T> interfaceClass, InvocationHandler handler) {
320
- // Hidden classes provide better encapsulation for dynamically generated classes
321
- MethodHandles.Lookup lookup = MethodHandles.lookup();
322
-
323
- // Framework code would use hidden classes for better isolation
324
- // This is typically handled by frameworks, not application code
325
- return interfaceClass.cast(
326
- Proxy.newProxyInstance(
327
- interfaceClass.getClassLoader(),
328
- new Class<?>[]{interfaceClass},
329
- handler
330
- )
331
- );
332
- }
333
- }
334
- ```
335
-
336
- ### JEP 334: JVM Constants API (Java 12)
337
-
338
- **Migration Pattern**: Use for compile-time constants
339
-
340
- ```java
341
- import java.lang.constant.*;
342
-
343
- // For advanced metaprogramming and tooling
344
- public class ConstantExample {
345
- // Use dynamic constants for computed values
346
- public static final DynamicConstantDesc<String> COMPUTED_CONSTANT =
347
- DynamicConstantDesc.of(
348
- ConstantDescs.BSM_INVOKE,
349
- "computeValue",
350
- ConstantDescs.CD_String
351
- );
352
-
353
- // Primarily used by compiler and framework developers
354
- public static String computeValue() {
355
- return "Computed at runtime, cached as constant";
356
- }
357
- }
358
- ```
359
-
360
- ### JEP 415: Context-Specific Deserialization Filters (Java 17)
361
-
362
- **Migration Pattern**: Enhanced security for object deserialization
363
-
364
- ```java
365
- import java.io.*;
366
-
367
- public class SecureDeserialization {
368
- // Set up deserialization filters for security
369
- public static void setupSerializationFilters() {
370
- // Global filter
371
- ObjectInputFilter globalFilter = ObjectInputFilter.Config.createFilter(
372
- "java.base/*;java.util.*;!*"
373
- );
374
- ObjectInputFilter.Config.setSerialFilter(globalFilter);
375
- }
376
-
377
- public <T> T deserializeSecurely(byte[] data, Class<T> expectedType) throws IOException, ClassNotFoundException {
378
- try (ByteArrayInputStream bis = new ByteArrayInputStream(data);
379
- ObjectInputStream ois = new ObjectInputStream(bis)) {
380
-
381
- // Context-specific filter
382
- ObjectInputFilter contextFilter = ObjectInputFilter.Config.createFilter(
383
- expectedType.getName() + ";java.lang.*;!*"
384
- );
385
- ois.setObjectInputFilter(contextFilter);
386
-
387
- return expectedType.cast(ois.readObject());
388
- }
389
- }
390
- }
391
- ```
392
-
393
- ### JEP 356: Enhanced Pseudo-Random Number Generators (Java 17)
394
-
395
- **Migration Pattern**: Use new random generator interfaces
396
-
397
- ```java
398
- import java.util.random.*;
399
-
400
- // Old: Limited Random class
401
- Random oldRandom = new Random();
402
- int oldValue = oldRandom.nextInt(100);
403
-
404
- // New: Enhanced random generators (Java 17+)
405
- RandomGenerator generator = RandomGeneratorFactory
406
- .of("Xoshiro256PlusPlus")
407
- .create(System.nanoTime());
408
-
409
- RandomGenerator.SplittableGenerator splittableGenerator =
410
- RandomGeneratorFactory.of("L64X128MixRandom").create();
411
-
412
- // Better for parallel processing
413
- splittableGenerator.splits(4)
414
- .parallel()
415
- .mapToInt(rng -> rng.nextInt(1000))
416
- .forEach(System.out::println);
417
-
418
- // Streamable random values
419
- generator.ints(10, 1, 101)
420
- .forEach(System.out::println);
421
- ```
422
-
423
- ## I/O and Networking Improvements
424
-
425
- ### JEP 380: Unix-Domain Socket Channels (Java 16)
426
-
427
- **Migration Pattern**: Use Unix domain sockets for local IPC
428
-
429
- ```java
430
- import java.net.UnixDomainSocketAddress;
431
- import java.nio.channels.*;
432
-
433
- // Old: TCP sockets for local communication
434
- // ServerSocketChannel server = ServerSocketChannel.open();
435
- // server.bind(new InetSocketAddress("localhost", 8080));
436
-
437
- // New: Unix domain sockets (Java 16+)
438
- public class UnixSocketExample {
439
- public void createUnixDomainServer() throws IOException {
440
- Path socketPath = Path.of("/tmp/my-app.socket");
441
- UnixDomainSocketAddress address = UnixDomainSocketAddress.of(socketPath);
442
-
443
- try (ServerSocketChannel server = ServerSocketChannel.open(StandardProtocolFamily.UNIX)) {
444
- server.bind(address);
445
-
446
- while (true) {
447
- try (SocketChannel client = server.accept()) {
448
- // Handle client connection
449
- handleClient(client);
450
- }
451
- }
452
- }
453
- }
454
-
455
- public void connectToUnixSocket() throws IOException {
456
- Path socketPath = Path.of("/tmp/my-app.socket");
457
- UnixDomainSocketAddress address = UnixDomainSocketAddress.of(socketPath);
458
-
459
- try (SocketChannel client = SocketChannel.open(address)) {
460
- // Communicate with server
461
- ByteBuffer buffer = ByteBuffer.allocate(1024);
462
- client.read(buffer);
463
- }
464
- }
465
-
466
- private void handleClient(SocketChannel client) throws IOException {
467
- ByteBuffer buffer = ByteBuffer.allocate(1024);
468
- int bytesRead = client.read(buffer);
469
- // Process client data
470
- }
471
- }
472
- ```
473
-
474
- ### JEP 352: Non-Volatile Mapped Byte Buffers (Java 14)
475
-
476
- **Migration Pattern**: Use for persistent memory operations
477
-
478
- ```java
479
- import java.nio.MappedByteBuffer;
480
- import java.nio.channels.FileChannel;
481
- import java.nio.file.StandardOpenOption;
482
-
483
- public class PersistentMemoryExample {
484
- public void usePersistentMemory() throws IOException {
485
- Path nvmFile = Path.of("/mnt/pmem/data.bin");
486
-
487
- try (FileChannel channel = FileChannel.open(nvmFile,
488
- StandardOpenOption.READ,
489
- StandardOpenOption.WRITE,
490
- StandardOpenOption.CREATE)) {
491
-
492
- // Map as persistent memory
493
- MappedByteBuffer buffer = channel.map(
494
- FileChannel.MapMode.READ_WRITE, 0, 1024,
495
- ExtendedMapMode.READ_WRITE_SYNC
496
- );
497
-
498
- // Write data that persists across crashes
499
- buffer.putLong(0, System.currentTimeMillis());
500
- buffer.putInt(8, 12345);
501
-
502
- // Force write to persistent storage
503
- buffer.force();
504
- }
505
- }
506
- }
507
- ```
508
-
509
- ## Build System Configuration
510
-
511
- ### Maven Configuration
512
-
513
- ```xml
514
- <properties>
515
- <maven.compiler.source>17</maven.compiler.source>
516
- <maven.compiler.target>17</maven.compiler.target>
517
- <maven.compiler.release>17</maven.compiler.release>
518
- </properties>
519
-
520
- <build>
521
- <plugins>
522
- <plugin>
523
- <groupId>org.apache.maven.plugins</groupId>
524
- <artifactId>maven-compiler-plugin</artifactId>
525
- <version>3.11.0</version>
526
- <configuration>
527
- <release>17</release>
528
- <!-- Enable preview features if using JEP 406 -->
529
- <compilerArgs>
530
- <arg>--enable-preview</arg>
531
- </compilerArgs>
532
- </configuration>
533
- </plugin>
534
-
535
- <!-- For running tests with preview features -->
536
- <plugin>
537
- <groupId>org.apache.maven.plugins</groupId>
538
- <artifactId>maven-surefire-plugin</artifactId>
539
- <version>3.0.0</version>
540
- <configuration>
541
- <argLine>--enable-preview</argLine>
542
- </configuration>
543
- </plugin>
544
- </plugins>
545
- </build>
546
- ```
547
-
548
- ### Gradle Configuration
549
-
550
- ```kotlin
551
- java {
552
- toolchain {
553
- languageVersion = JavaLanguageVersion.of(17)
554
- }
555
- }
556
-
557
- tasks.withType<JavaCompile> {
558
- options.release.set(17)
559
- // Enable preview features if needed
560
- options.compilerArgs.addAll(listOf("--enable-preview"))
561
- }
562
-
563
- tasks.withType<Test> {
564
- useJUnitPlatform()
565
- // Enable preview features for tests
566
- jvmArgs("--enable-preview")
567
- }
568
- ```
569
-
570
- ## Deprecations and Removals
571
-
572
- ### JEP 411: Deprecate the Security Manager for Removal
573
-
574
- **Migration Pattern**: Remove Security Manager dependencies
575
-
576
- ```java
577
- // Old: Using Security Manager
578
- SecurityManager sm = System.getSecurityManager();
579
- if (sm != null) {
580
- sm.checkPermission(new RuntimePermission("shutdownHooks"));
581
- }
582
-
583
- // New: Alternative security approaches
584
- // Use application-level security, containers, or process isolation
585
- // Most applications don't need Security Manager functionality
586
- ```
587
-
588
- ### JEP 398: Deprecate the Applet API for Removal
589
-
590
- **Migration Pattern**: Migrate from Applets to modern web technologies
591
-
592
- ```java
593
- // Old: Java Applet (deprecated)
594
- public class MyApplet extends Applet {
595
- @Override
596
- public void start() {
597
- // Applet code
598
- }
599
- }
600
-
601
- // New: Modern alternatives
602
- // 1. Convert to standalone Java application
603
- public class MyApplication extends JFrame {
604
- public MyApplication() {
605
- setTitle("My Application");
606
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
607
- // Application code
608
- }
609
-
610
- public static void main(String[] args) {
611
- SwingUtilities.invokeLater(() -> {
612
- new MyApplication().setVisible(true);
613
- });
614
- }
615
- }
616
-
617
- // 2. Use Java Web Start alternative (jlink)
618
- // 3. Convert to web application using modern frameworks
619
- ```
620
-
621
- ### JEP 372: Remove the Nashorn JavaScript Engine
622
-
623
- **Migration Pattern**: Use alternative JavaScript engines
624
-
625
- ```java
626
- // Old: Nashorn (removed in Java 17)
627
- // ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
628
-
629
- // New: Alternative approaches
630
- // 1. Use GraalVM JavaScript engine
631
- ScriptEngine engine = new ScriptEngineManager().getEngineByName("graal.js");
632
-
633
- // 2. Use external JavaScript execution
634
- ProcessBuilder pb = new ProcessBuilder("node", "script.js");
635
- Process process = pb.start();
636
-
637
- // 3. Use web-based approach or embedded browser
638
- ```
639
-
640
- ## JVM and Performance Improvements
641
-
642
- ### JEP 377: ZGC - A Scalable Low-Latency Garbage Collector (Java 15)
643
-
644
- **Migration Pattern**: Enable ZGC for low-latency applications
645
-
646
- ```bash
647
- # Enable ZGC
648
- -XX:+UseZGC
649
- -XX:+UnlockExperimentalVMOptions # Not needed in Java 17
650
-
651
- # Monitor ZGC performance
652
- -XX:+LogVMOutput
653
- -XX:LogFile=gc.log
654
- ```
655
-
656
- ### JEP 379: Shenandoah - A Low-Pause-Time Garbage Collector (Java 15)
657
-
658
- **Migration Pattern**: Enable Shenandoah for consistent latency
659
-
660
- ```bash
661
- # Enable Shenandoah
662
- -XX:+UseShenandoahGC
663
- -XX:+UnlockExperimentalVMOptions # Not needed in Java 17
664
-
665
- # Shenandoah tuning
666
- -XX:ShenandoahGCHeuristics=adaptive
667
- ```
668
-
669
- ### JEP 341: Default CDS Archives (Java 12) & JEP 350: Dynamic CDS Archives (Java 13)
670
-
671
- **Migration Pattern**: Improved startup performance
672
-
673
- ```bash
674
- # CDS is enabled by default, but you can create custom archives
675
- # Create custom CDS archive
676
- java -XX:DumpLoadedClassList=classes.lst -cp myapp.jar com.example.Main
677
- java -Xshare:dump -XX:SharedClassListFile=classes.lst -XX:SharedArchiveFile=myapp.jsa -cp myapp.jar
678
-
679
- # Use custom CDS archive
680
- java -XX:SharedArchiveFile=myapp.jsa -cp myapp.jar com.example.Main
681
- ```
682
-
683
- ## Testing and Migration Strategy
684
-
685
- ### Phase 1: Foundation (Weeks 1-2)
686
-
687
- 1. **Update build system**
688
-
689
- - Modify Maven/Gradle configuration for Java 17
690
- - Update CI/CD pipelines
691
- - Verify dependency compatibility
692
-
693
- 2. **Address removals and deprecations**
694
- - Remove Nashorn JavaScript engine usage
695
- - Replace deprecated Applet APIs
696
- - Update Security Manager usage
697
-
698
- ### Phase 2: Language Features (Weeks 3-4)
699
-
700
- 1. **Implement Records**
701
-
702
- - Convert data classes to records
703
- - Add validation in compact constructors
704
- - Test serialization compatibility
705
-
706
- 2. **Add Pattern Matching**
707
- - Convert instanceof chains
708
- - Implement type-safe casting patterns
709
-
710
- ### Phase 3: Advanced Features (Weeks 5-6)
711
-
712
- 1. **Switch Expressions**
713
-
714
- - Convert switch statements to expressions
715
- - Use new arrow syntax
716
- - Implement complex yield logic
717
-
718
- 2. **Text Blocks**
719
- - Replace concatenated multi-line strings
720
- - Update SQL and HTML generation
721
- - Use formatting methods
722
-
723
- ### Phase 4: Sealed Classes (Weeks 7-8)
724
-
725
- 1. **Design sealed hierarchies**
726
-
727
- - Identify inheritance restrictions
728
- - Implement sealed class patterns
729
- - Combine with pattern matching
730
-
731
- 2. **Testing and validation**
732
- - Comprehensive test coverage
733
- - Performance benchmarking
734
- - Compatibility verification
735
-
736
- ## Performance Considerations
737
-
738
- ### Records vs Traditional Classes
739
-
740
- - Records are more memory efficient
741
- - Faster creation and equality checks
742
- - Automatic serialization support
743
- - Consider for data transfer objects
744
-
745
- ### Pattern Matching Performance
746
-
747
- - Eliminates redundant type checks
748
- - Reduces casting overhead
749
- - Better JVM optimization opportunities
750
- - Use with sealed classes for exhaustiveness
751
-
752
- ### Switch Expressions Optimization
753
-
754
- - More efficient bytecode generation
755
- - Better constant folding
756
- - Improved branch prediction
757
- - Use for complex conditional logic
758
-
759
- ## Best Practices
760
-
761
- 1. **Use Records for Data Classes**
762
-
763
- - Immutable data containers
764
- - API data transfer objects
765
- - Configuration objects
766
-
767
- 2. **Apply Pattern Matching Strategically**
768
-
769
- - Replace instanceof chains
770
- - Use with sealed classes
771
- - Combine with switch expressions
772
-
773
- 3. **Adopt Text Blocks for Multi-line Content**
774
-
775
- - SQL queries
776
- - JSON templates
777
- - HTML content
778
- - Configuration files
779
-
780
- 4. **Design with Sealed Classes**
781
-
782
- - Domain modeling
783
- - State machines
784
- - Algebraic data types
785
- - API evolution control
786
-
787
- 5. **Leverage Enhanced Random Generators**
788
- - Parallel processing scenarios
789
- - High-quality random numbers
790
- - Statistical applications
791
- - Gaming and simulation
792
-
793
- This comprehensive guide enables GitHub Copilot to provide contextually appropriate suggestions when upgrading Java 11 projects to Java 17, focusing on language enhancements, API improvements, and modern Java development practices.