ABSTRACT
This paper investigates the prevalence of reflection and reflective techniques in the NuGet distribution mechanism and applies the results of the prevalence into a general discussion on the prevalence of reflective techniques onto the Microsoft .Net ecosystem as whole. The results show a over 15% utilization in over 6 million NuGets which suggests that reflective techniques are a very valuable technique in the .Net ecosystem. The results also show and discuss the number of overall NuGets utilizing reflection, unique NuGets utilizing reflection, and the most popular reflective references in said NuGets. The paper then concludes with a discussion on the advantages and disadvantages of utilizing reflection, and the value of learning and utilizing the technique for developers both at the initial stages of their career and the later ones.
- Blair, G. S., & Coulson, G. (1997). The case for reflective middleware. Proc. 3rd. Cabernet Plenary Workshop. Rennes. Retrieved from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.144.7207&rep=rep1&type=pdfGoogle Scholar
- Capilla, R., Gallina, B., Cetina, C., & Favaro, J. (2019). Opportunities for software reuse in an uncertain world: From past to emerging trends. Journal of software : Evolution and process, 16.Google ScholarDigital Library
- Costa, F. M., & Santos, B. D. (2004). Structuring reflective middleware using meta-informationmanagement: The Meta-ORB approach and prototypes. J Braz Comp Soc, 45-61.Google ScholarCross Ref
- Evain, J. (2021, 07 29). Mono.Cecil|Mono. Retrieved from Mono Project: https://web.archive.org/web/20210516025407/http://www.mono-project.com/docs/tools+libraries/libraries/Mono.Cecil/Google Scholar
- Forax, R., Duris, E., & Roussel, G. (2004). A reflective implementation of java multi-methods. IEEE Transactions on Software Engineering, 1055-1071.Google ScholarDigital Library
- Fowler, M. (2002). Using Metadata. IEEE Software, 13-17.Google ScholarDigital Library
- Jacques, M., Jacques, M., & Demers, F. N. (1996). A tutorial on behavioral reflection and its implementation. Proceedings of the Reflection, 1-20.Google Scholar
- JamesNK, JonHanna, ravensorb, fgreinacher, stakx, dmitryvk, & xp44mm. (2021, 08 10). Newtonsoft.Json/Reflectionutils.cs at master. Retrieved from JamesNK/Newtonsoft.Json: https://web.archive.org/web/20210810152858/https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Utilities/ReflectionUtils.csGoogle Scholar
- Landman, D., Serebrenik, A., & Vinju, J. J. (2017). Challenges for static analysis of java reflection - Literature review and empiracal study. ACM 39th international confrence on software engineering. IEEE.Google Scholar
- Li, Y., Tan, T., & Xue, J. (2019). Understanding and Analyzing Java Reflection. ACM Transactions on Software Engineering and Methodolgy , 1-50.Google Scholar
- Lilis, Y., & Savidis, A. (2019). A survey of metaprogramming languages. ACM Computing Surveys, 1-39.Google Scholar
- Microsoft. (2019, Feb 19). What is NuGet and what does it do? Retrieved from Microsoft Docs: https://web.archive.org/web/20190219181330/https://docs.microsoft.com/en-us/nuget/what-is-nugetGoogle Scholar
- Microsoft. (2021, 3 8). Finding and choosing a NuGet Package. Retrieved from Microsoft Docs: https://web.archive.org/web/20210308041741/https://docs.microsoft.com/en-us/nuget/consume-packages/finding-and-choosing-packagesGoogle Scholar
- Microsoft. (2021, 07 31). MethodBase.GetMethodFromHandle Method (System.Reflection). Retrieved from Microsoft Docs: https://web.archive.org/web/20210731123942/https://docs.microsoft.com/en-us/dotnet/api/system.reflection.methodbase.getmethodfromhandle?view=net-5.0Google Scholar
- Microsoft. (2021, May 24). Statistics. Retrieved from NuGet Gallery: https://web.archive.org/web/20210524210439/https://www.nuget.org/statsGoogle Scholar
- Microsoft. (2021, Jun 8). The history of C# - C# Guide. Retrieved from Microsoft docs: https://web.archive.org/web/20210608055315/https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-historyGoogle Scholar
- Papoulias, N., Denker, M., Ducasse, S., & Fabresse, L. (2017). End-user abstractions for meta-control: Reifying the reflectogram. Science of Computer Programming, 2-16.Google ScholarCross Ref
- Spinellis, D. (2012). Package Management Systems. IEEE Software, 84-86.Google ScholarDigital Library
- Watanabe, T. (2013). Towards a compositional reflective architecture for actor-based systems. AGERE! (pp. 19-24). Association for Computing Machinery.Google Scholar
- Yamazaki, T., & Chiba, S. (2019). Buffered Garbage collection: An approach to collecting self-created garbage objects. Journal of information processing, 479-488.Google ScholarCross Ref
Comments