b523db2bbea7098aeccea0f78f41f223
     
     
     
    
    
    
    
    
    
    
 
تقنية و أشياء أخرى
تقنية و أشياء أخرى
مختلف المقالات و النقاشات و الروابط المتعلقة بالتقنية او المواضيع العامة
كيف تحمي الـ source code بعد تحويل المشروع إلى executable jar ؟
                         عربي     English

كيف تحمي الـ source code بعد تحويل المشروع إلى executable jar ؟

   محمد جمال الذياب        08-02-2020  
   Snack3r - Unknown   
السلام عليكم
أنا عضو جديد في هذه المنصة، مشرف سابق في منتديات الفريق العربي للبرمجة و rédacteur أيضاً في Club des développeurs et IT Pro.
أعجبتني فكرة الموقع و أحببت أن أناقش معكم كيفية حماية ملف الـ jar إذا كان المشروع غير مفتوح المصدر.
تحياتي.
التعليقات
   eng.fouad - فؤاد المالكي   
توجد بعض الطرق لحماية السورس الكود (إلى حدٍ ما) من الهندسة العكسية (عن طريق الـ decompilation):
1. الـ obfuscation: وهي طريقة تقوم بتغيير أسماء الكلاسات والدوال والمتغيرات، لكي يصعب على "الهاكر" فهم السورس كود. ومن أشهر الـ obfuscator هو ProGuard.
2. التحويل من byte-code إلى native-code: أي تقوم مثلاً بتحويل برنامج الجافا إلى exe، وبهذه الطريقة لن يمكن استرجاع كود الجافا الأصلي. لكن يعيب هذه الطريقة هو أنك لن تتمكن من تشغيل البرنامج على الأنظمة الأخرى، بعكس ما يميز برامج الجافا. ومن أشهر الأدوات لعمل ذلك هو Excelsior JET.
3. تشفير ملف الكلاس، وأثناء الـ runtime، يقوم برنامج الجافا بفك التشفير وإضافته إلى الـ ClassLoader. على أية حال، يستطيع "الهاكر" عمل هندسة عكسية للكود الذي يقوم بفك تشفير ملف الكلاس.
4. جعل الكود يعمل على server، وجعل الـ client يتخاطب معه عبر الإنترنت (عبر البروتوكول HTTP مثلاً). وهذه تعتبر أفضل طريقة لحماية الكود من الهاكرز.
   Snack3r - Unknown   
شُكراً على المُداخلة القيمة.
   طالب علم - ^-^   
أخي لا تتعب نفسك
ما دام يملك نسخة من البرنامج
يستطيع إعادة بنائه من جديد
-
القانون هو الحامي الوحيد
   Snack3r - Unknown   
أخي الكريم، هذا قسم البرمجة بالجافا و ليس "قسم القانون" إن لم تكن على دراية بتفاصيل الموضوع، أنصحك بعدم التعليق حفاظا على موضوعية النقاش.
   معتز - معتز عبدالعظيم   
ليس بالضرورة أن يكون لكل مشكلة فنيه حل فني. يمكن أن يكون الحل قانوني كما اقترح اﻷخ (طالب علم)
طريقة إيجاد حل فني لكل مشكلة فنيه هي تصلح لمن لا يستطيع النظر أبعد من قدميه. أما التفكير خارج الصندوق يقود الشخص إلى حلول أخرى خارج اﻹطار الفني الضيق
   طالب علم - ^-^   
 

هذا قسم البرمجة بالجافا و ليس "قسم القانون"


أنا لم أناقش القانون بل قلت أنه الطريقة الوحيد للحماية فعلا
كود البرنامج مثل الكتاب تحمي بقانون الملكية الفكرية
 

إن لم تكن على دراية بتفاصيل الموضوع، أنصحك بعدم التعليق حفاظا على موضوعية النقاش


بعض علمي أخذته من دروسك في منتديات الفريق العربي للبرمجة
ولك بذلك فضل عليّ فجزاك الله خيرا على دروسك
   hanymoh - hany moh   
https://arabia.io/go/14327
   Snack3r - Unknown   
لاحاجة إلى الهندسة العكسية، يكفي استخدام أداة بسيطة لعمل décompilation و الحصول على الكود سورس الأصلي.
الـ Java Decompiler مثلا يُمكنه تحويل ملف الجار إلى كلاسات جافا في لحظات ! :)
   معتز - معتز عبدالعظيم   
كيف يتم ذلك؟ اين أجد الجافا Decompiler?
أريد أن أقوم بتجربة عملية
   طالب علم - ^-^   
 

اين أجد الجافا Decompiler?


http://jd.benow.ca/
   معتز - معتز عبدالعظيم   
هذه فضيحة كبيرة للجافا!
قمت بفتح عدد كبير من المكتبات والـ JAR والـ CLASS بهذا البرنامج، وقد أظهر كل الكود المكتوب، لم يتبقى إلا التعليقات comments هي التي لم تظهر
أعتقد أن هذا يُثبت أن لغة جافا لا ترقى لأن تكون compiled language لأن من صفات الـ compiled language أن تقوم بإصدار برامج تنفيذية ثُنائية. لكن هذا البرنامج يُثبت أنها ليست برامج ثُنائية حقيقية
سؤال آخر، هل برامج اﻷندرويد المكتوبة بالجافا ايضاً يحدث لها Decompilation? الـ APK
   eng.fouad - فؤاد المالكي   
فضيحة كبيرة للجافا؟ جميع اللغات يوجد فيها decompilation. على أية حال، توجد أدوات وبرامج تقوم بتحويل برامج الجافا من byte-code إلى native-code، وبالتالي لن تستطيع إعادة كود الجافا الأصلي، ولكن يمكن الإعادة لكود السي/سي بلص بلص، وأيضاً لن تستطيع تشغيل البرنامج على الأنظمة الأخرى.
   معتز - معتز عبدالعظيم   
هل توجد للغات مثل سي ودلفي إمكانية عمل decomplication دلني على تلك اﻷداة إذا امكن. وماهي البرامج التي تقوم بتحويل كود الجافا إلى native code?
   طالب علم - ^-^   
 

هل توجد للغات مثل سي ودلفي إمكانية عمل decomplication دلني على تلك اﻷداة إذا امكن


بالنسبة لـ C فيوجد[1] لكن المشكلة المترجمات Compilers لا تنتج نفس الكود حتى بدون تحسين الكود(أحد خيارات GCC)
هذا الكود مثالا
http://im81.gulfup.com/WmDV5d.gif
-
مترجم MinGW مع Codeblocks ينتج
بداية البرنامج
http://im58.gulfup.com/XNwzL8.gif
-
الدالة Main
http://im84.gulfup.com/eovbTn.gif
-
مترجم OpenWatcom مع IDE (يأتي معه في نفس الحزمة)
بداية البرنامج
http://im74.gulfup.com/KSKdqK.gif
-
الدالة Main
http://im66.gulfup.com/cg6E04.gif
نرى الاختلاف كبير مع أنه نفس الكود !
-
[1]
https://www.hex-rays.com/products/decompiler
   معتز - معتز عبدالعظيم   
هل يُمكنك عمل إجراء أكثر تعقيد بلغة سي، مثلاً الكتابة في ملف نصي، ومعرفة كيف يتم إعادة الكود.
   طالب علم - ^-^   
تقصد المثال أم البرنامج
   معتز - معتز عبدالعظيم   
اقصد بدلاً من HelloWorld قم بكتابة برنامج لقراءة أو كتابة ملف ثم محاولة إرجاع المصدر الأصلي
   طالب علم - ^-^   
الكود الأصلي ترجمته بـ MinGW مع CodeBlocks
-
 
int main()
{
FILE *fp;
fp = fopen("out.txt","w+");
fprintf(fp,"Hello World!");
fclose(fp);
return 0;
}


-
الكود المولد من Hex-Rays IDA 6.1
 
int __fastcall sub_401010(int a1, char a2)
{
char v2; // ST08_1@1
int v3; // eax@1
int v4; // ecx@1
int v5; // edx@1
v2 = a2;
v3 = sub_4012A0("out.txt", (int)&unk_409004, a1);
sub_4013A0(v4, v3, v3, (int)"Hello World!", v2);
sub_401490(v5);
return 0;
}


ملاحظة:
تجاهلت دوال المكتبة القياسية التي تم توليدها
   طالب علم - ^-^   
هذا كود Assembly الذي تم توليد كود C منه
-
 
sub_401010 proc near
push edx
mov edx, offset unk_409004
mov eax, offset aOut_txt ; "out.txt"
call sub_4012A0
push offset aHelloWorld ; "Hello World!"
push eax
mov edx, eax
call sub_4013A0
add esp, 8
mov eax, edx
call sub_401490
xor eax, eax
pop edx
retn
sub_401010 endp

   معتز - معتز عبدالعظيم   
شكراً لك.
طلب أخير، قمت بعمل برنامج للكتابة في ملف نصي ثم عرضه بواسطة فري باسكال/لازاراس
هل يُمكنك إعادة المصدر ثم عرضه هنا.
البرنامج في هذا الرابط:
http://code.sd/share/FileSample.zip
   طالب علم - ^-^   
هناك أمورا نسيت أن أذكرها
عند توليد كود البرنامج مكتوب بـ C ستحصل على :

كود إبتدئي يحصل على المعلومات التي تحتاجها المكتبات ( ... ,Argc, Argv, stdin, stdout, stderr)

كود المكتبات المدمج مع البرنامج Static Library مثل (printf,fopen, ...)

كود معالج الإستثنائات

كود الذي يكتبه المبرمج


حتى تجد كود المبرمج عليك أن تعرف متى يبدأ كود المكتبة ومتى ينتهي
وهذا يختلف مع كل مترجم لغة(ما يولده MinGW غير الذي يولده ++MVC)
أما في حالة Free Pascal فأنا لا أعرف كيف يولد البرامج وما هي بنية مكتباته
حتى أستطيع الفصل بينه وما كتبت
لكن على كل حالة رفعة لك الكود المولد عن المثال الذي طلبته
https://arabia.io/go/14709/67843
والكود المولد عن FileSample
-
http://www.gulfup.com/?4jPN3j
   طالب علم - ^-^   
صورة توضيحية على ما ذكرتُ
http://pds10.egloos.com/pds/200907/15/90/c0098890_4a5dbf7e87e61.gif
   طالب علم - ^-^   
الكود الإبتدائي ما قبل Main
http://en.wikipedia.org/wiki/Crt0
   معتز - معتز عبدالعظيم   
شكراً لك أخ طالب علم
هذا مطمئن بأن البرامج الطبيعية Native لا يمكن إرجاعها إلى مصدرها الأصلي بسهولة. حتى لو تم إرجاعها فلا يمكن تعديلها وإعادة ترجمتها.
ونستخلص من الملف الذي أرسلته اﻵتي:

لم يتم التعرف على لغة البرمجة اﻷصلية التي أنتجت الملف الثُنائي، حيث استخدمت مترجم فري باسكال أما برنامج الـ Decompiler فقط افترض أنها Visual C++, هذا جزء من ترويسة الملف الناتج:
 
/* This file has been generated by the Hex-Rays decompiler.
Copyright (c) 2007-2011 Hex-Rays <info@hex-rays.com >
Detected compiler: Visual C++
*/
#include <windows.h>
#include <math.h>
#include <defs.h>


أسماء المتغيرات والدوال غير موجودة في البرنامج الناتج.

ليس هُناك علاقة بين حجم البرنامج اﻷصلي والناتج. حيث أن البرنامج اﻷصلي حوالي 50 سطر، أما الناتج فهو 198 ألف سطر!

هذا البرنامج تمت كتابته في حوالي 5 دقائق، لم يستطع الـ Decompiler بإرجاعه بصورة مفهومة، فكيف البرامج التي تحتاج لسنوات للتطوير.


هذا نص البرنامج اﻷصلي:
 
unit main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
LCLIntf;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
F: TFileStream;
begin
F:= TFileStream.Create('file.txt', fmCreate);
F.WriteAnsiString('Hello there' + #13#10);
F.WriteAnsiString('Today is: ' + DateTimeToStr(Now));
F.Free;
OpenDocument('file.txt');
end;
end.


هل توافق على هذه الاستنتاجات؟ لأني أريد البناء عليها في المستقبل
   طالب علم - ^-^   
1)
برنامج Hex-Rays IDA لا يفرق بين المترجمات،
هناك برنامج يسمى Exeinfo PE يستطيع معرفة مترجم الذي ترجم البرنامج
http://im54.gulfup.com/dyyT6I.gif
http://im84.gulfup.com/zru80v.gif
http://im87.gulfup.com/YMs8RW.gif
الأخيرة MinGW لم يتعرف عليه بالتفصيل لكنه يبقى GCC
-
2)
صحيح ولن يستطيعوا إيجادها
-
3) السبب هو المكتبة القياسية المدمجة في البرنامج
فالكود المولد هو
كود المبرمج + كود المكتبة القياسية
-
4) IDA هو Disassembly ليس متخصص في Free Pascal أو MinGW أو غيرهما
هناك برامج متخصص مثل Java Decompiler الفرق أن الجافا أسهل من غيرها
-
 

هل توافق على هذه الاستنتاجات؟ لأني أريد البناء عليها في المستقبل


فيما يتعلق بأسماء المتغيرات والدوال من غير المكتبة القياسية، نعم
   طالب علم - ^-^   
مكتبة STL القياسية في ++C صعب على Decompiler التعرف إليها
حتى لو كان متخصص بسبب طبيعة Templates المتغيرة
   معتز - معتز عبدالعظيم   
أريد أن أضيف كلما زاد تعقيد البرنامج كلما اعتمد على مكتبات إضافية أكثر، بهذه الطريقة يصعب إرجاعه إلى اﻷصل
وايضاً أن لغات البرمجة الـ Native تعتمد على نداء مكتبات موجودة في نظام التشغيل بشكل أساسي
والباسكال لديه مكتبة قياسية ذات حجم كبير، لذلك البرامج التنفيذية المكتوبة بلغة اوبجكت باسكال كبيرة جداً مقارنة بالسي
   طالب علم - ^-^   
هذا مثال يرسم شكل معين على الطرفية
أخترته لأنه يحمل خوارزمية أعقد من المقترح
الكود الأصلي
 
int main()
{
int n, c, k, space = 1;
printf("Enter number of rows\n");
scanf("%d", &n);
space = n - 1;
for (k = 1; k <= n; k++)
{
for (c = 1; c <= space; c++)
printf(" ");
space--;
for (c = 1; c <= 2*k-1; c++)
printf("*");
printf("\n");
}
space = 1;
for (k = 1; k <= n - 1; k++)
{
for (c = 1; c <= space; c++)
printf(" ");
space++;
for (c = 1 ; c <= 2*(n-k)-1; c++)
printf("*");
printf("\n");
}
return 0;
}


ترجمته بـ MinGW مع CodeBlocks
الكود المولد من HexRays IDA 6.1
 
int __fastcall sub_401010(int a1, int a2)
{
int v2; // edx@1
int v3; // ecx@1
signed int v4; // edi@1
int v5; // ecx@1
signed int v6; // esi@2
int i; // edx@3
int v8; // edx@4
int v9; // edx@5
int j; // ecx@5
int v11; // edx@6
signed int v12; // ebx@8
int k; // ecx@8
int l; // edx@10
int v15; // edx@11
int v16; // edx@12
int v17; // edx@14
int v18; // ecx@15
int v20; // [sp+0h] [bp-1Ch]@1
sub_401110(a1, a2, (int)"Enter number of rows\n", v20);
sub_4011B0(v3, v2, (int)"%d", (unsigned int)&v20);
v4 = 1;
v5 = v20 - 1;
if ( v20 >= 1 )
{
v6 = 1;
do
{
for ( i = 1; i <= v5; i = v8 + 1 )
sub_401110(v5, i, (int)" ", v20);
v9 = 1;
for ( j = v5 - 1; v9 <= v6; v9 = v11 + 1 )
sub_401110(j, v9, (int)"*", v20);
sub_401110(v5, v9, (int)"\n", v20);
++v4;
v6 += 2;
}
while ( v4 <= v20 );
}
v12 = 1;
for ( k = 1; k <= v20 - 1; k = v18 + 1 )
{
for ( l = 1; l <= v12; l = v15 + 1 )
sub_401110(k, l, (int)" ", v20);
v16 = 1;
++v12;
while ( v16 <= 2 * (v20 - k) - 1 )
{
sub_401110(k, v16, (int)"*", v20);
v16 = v17 + 1;
}
sub_401110(k, v16, (int)"\n", v20);
}
return 0;
}


ملاحظة:
تجاهلت دول المكتبة القياسية التي تم توليدها
   معتز - معتز عبدالعظيم   
لدي برنامج مكتوب بلغة Free Pascal وهي native compiled هل يمكنك إرجاع ولو سطر واحد من البرنامج؟
يمكنك تحميله من هذا الرابط:
http://code.sd/tasjeel/Tasjeel3Embedded.zip
   طالب علم - ^-^   
 

أعتقد أن هذا يُثبت أن لغة جافا لا ترقى لأن تكون compiled language
لأن من صفات الـ compiled language أن تقوم بإصدار برامج تنفيذية ثُنائية.
لكن هذا البرنامج يُثبت أنها ليست برامج ثُنائية حقيقية


جربتها على لعبة Minecraft وظهر الكود واضح وصريح لكن لم تكن الاسماء مفهومة كانت على شاكلة a aa ab ac
ربما يكون في المترجم Compiler خيار لتشفير الأسماء
 

سؤال آخر، هل برامج اﻷندرويد المكتوبة بالجافا ايضاً يحدث لها Decompilation? الـ APK


ربما، لم أجرب فعل ذلك
قد يفيدك هذا الرابط
http://stackoverflow.com/questions/1249973/decompiling-dex-into-java-sourcecode
   ahmedalkabir   
بنسبة للموضوع الأندريود هناك برامج قامت بDecompilation وأضف إلي ذلك إني تمكنت إضافة سطر إلي لغة جافا أقصد لغة الألة خاصة بجافا إلي لعبة Subway وعمل :) لا أعرف هل لغة جافا ضعيفة إلي هذه الدرجة أو لا وللعلم أنا لأعرف شي عن جافا إلا قليل
   Snack3r - Unknown   
ممكن توضيح لهذه النقطة :
 

أضف إلي ذلك إني تمكنت إضافة سطر إلي لغة جافا أقصد لغة الألة خاصة بجافا إلي لعبة Subway وعمل

   ahmedalkabir   
أنا أقصد أن أعدل علي ملفات smali,سأعطيك مثال
smali code
const/4 v1, 0x1
if-ne v0, v1, :cond_0
const/4 v2, 0x2
move v0,v2
goto :goto_0
:cond_0
const/4 v2, 0x3
move v0,v2
:goto_0
   Snack3r - Unknown   
أوكي اتضحت الفكرة.
 

لا أعرف هل لغة جافا ضعيفة إلي هذه الدرجة أو لا وللعلم أنا لأعرف شي عن جافا إلا قليل


ماذا كنت تريدها أن تفعل ؟ :)
   ahmedalkabir   
لا شي بس أريد أن أوضح العيب في لغة جافا لا غير لا يوجد شي كامل
   Snack3r - Unknown   
 

أريد أن أوضح العيب في لغة جافا


هل العيب في وجهة نظرك هو بساطة عمل decompilation لملف الـ jar أم عدم تعرف الـ JVM على التغيير اليدوي لبنية ملف الـ smali ؟
 

لا يوجد شي كامل


هذا أمر بديهي، لغات البرمجة عمل بشري و الكمال لله وحده ! :)
   Snack3r - Unknown   
الفضيحة الحقيقية هي أن تتكلم في شيء لا تعرفه.
   معتز - معتز عبدالعظيم   
وماهو الشيء الذي لا أعرفه ؟
في الحقيقة كُنت استخدم جافا لأكثر من ثلاث أعوام. وقد سمعت أنه يمكن إعادة مصدر الكود من البرنامج التنفيذي، لكن لم اكن أتوقع أن يكون الموضوع بهذه السهولة، وحتى أسماء المتغيرات والكلاسات واﻹجراءات و الدوال تظهر بكل سهولة. والمشكلة أن من قام بعمل decomplication هم جهة أخرى أي third party. والمشكلة اﻷكبر أنه لا يمكن الحيلولة دون الـ decomplication على حسب هذه الصفحة:
http://www.jwrapper.com/protect-your-java-code.html
   معتز - معتز عبدالعظيم   
بالمناسبة يا اﻷخ القادم من المنتديات. لدي برنامج جافا يعمل في موريتانيا منذ عام 2012
   طالب علم - ^-^   
 

لدي برنامج جافا يعمل في موريتانيا منذ عام 2012


ماذا تقصد؟
   معتز - معتز عبدالعظيم   
هذه عبارة عابرة لأني عرفت أنه من موريتانيا
ولي عدد من اﻷصدقاء هُناك، وهم يمتازون باللباقة في الحديث والتواضع
   Snack3r - Unknown   
يعني أن حديثي ليس لبقاً و لستُ شخصاً متواضعاً، شكراً لك ! :)
   معتز - معتز عبدالعظيم   
لا لم اقصد هذا، لكن قصدت أنك أول شخص مختلف أقابله من موريتانيا
   supercoder - يوسف سيد   
اسف في التدخل
 

ولي عدد من اﻷصدقاء هُناك، وهم يمتازون باللباقة في الحديث والتواضع
أنك أول شخص مختلف أقابله من موريتانيا


هل هذه عنصرية ؟
   assassinateur - نذير صغير   
لا
   binadion - حينَّ يصبح التفكير كالخط المستقيم ، يموت العقل   
يقصد به الرد على :
 

الفضيحة الحقيقية هي أن تتكلم في شيء لا تعرفه.


أي أنه يعرف ، وليس كما تفضل الأخ الأخر بإسلوب تقليل من علم الأخ معتز :)
   Snack3r - Unknown   
جيد، لكن ما علاقة هذا بالموضوع ؟ :)
   معتز - معتز عبدالعظيم   
اقصد أني عملت برامج تجارية بالجافا وهي تعمل في بلدك.
هل عملت برامج حقيقية واستفاد منها الناس بلغة جافا؟
   Snack3r - Unknown   
نعم ! وبالسي و السي++ أيضاً :)
   Snack3r - Unknown   
أخي الكريم أنا لا أقلل من علمك و لكن للأسف أنت لا زلت تزيد قناعتي بأنك تتحدث عن موضوع لا تتقنه مع احترامي الشديد لك :)
 

أعتقد أن هذا يُثبت أن لغة جافا لا ترقى لأن تكون compiled language


من قال بأن جافا compiled language ؟ لو قرأت عن الجافا قليلا لعلمتَ أنها semi-compiled و شتان ما بين الأمرين.
 

وقد سمعت أنه يمكن إعادة مصدر الكود من البرنامج التنفيذي، لكن لم اكن أتوقع أن يكون الموضوع بهذه السهولة


في الجافا لا يوجد إطلاقا شيء اسمه "ملف تنفيذي" إن كنت تقصد ملف exe لأن بنية ملف الـ jar تختلف تماما عن بنية exe.
   معتز - معتز عبدالعظيم   
 

أخي الكريم أنا لا أقلل من علمك و لكن للأسف أنت لا زلت تزيد قناعتي بأنك تتحدث عن موضوع لا تتقنه مع احترامي الشديد لك :)


أنت أيضاً تزيد قناعتي أنك لا تعرف الكثير عن الجافا، وانك لم تكتب بها برامج حقيقية مع كامل احترامي لك :)
 

من قال بأن جافا compiled language ؟ لو قرأت عن الجافا قليلا لعلمتَ أنها semi-compiled و شتان ما بين الأمرين.


التحويل من source code إلى byte code ليتم تنفيذه بواسطة الـ virtual machine هي عملية complition
 

في الجافا لا يوجد إطلاقا شيء اسمه "ملف تنفيذي" إن كنت تقصد ملف exe لأن بنية ملف الـ jar تختلف تماما عن بنية exe.


ملفات الـ JAR هي ملفات تنفيذية، في نظام لينكس تقوم بإعطاها صلاحية execute حتى يتم تنفيذها مباشرة من الـ file explorer
   Snack3r - Unknown   
 

التحويل من source code إلى byte code ليتم تنفيذه بواسطة الـ virtual machine هي عملية complition


غير صحيح، javac يقوم بتحويل .java إلى .class (هذه العملية تُسمى compilation) بعد ذلك تقوم الـ JVM بتحميل الـ byte code و عمل interpretation له كما يُمكنها أيضاً أن تقوم بعمل JIT.
لهذا قُلت لك أن الجافا ليست compiled language بل هي semi-compiled لأن عملية الترجمة أو التفسير تتم على مرحلتين.
 

ملفات الـ JAR هي ملفات تنفيذية، في نظام لينكس تقوم بإعطاها صلاحية execute حتى يتم تنفيذها مباشرة من الـ file explorer


أنا كنت أتحدث عن الويندوز و ملفات exe، الـ jar اختصار لـ Java ARchive و هو ليس ملفا تنفيذياً من حيث البنية (كلامي واضح جداً) لأن ملف الـ Jar عبارة عن ملف ZIP و يُمكنك رؤية محتواه باستخدام WinRar مثلا.
   معتز - معتز عبدالعظيم   
نعم هو ملف مضغوط، يحتوي على classes تنفيذية، أي يمكن تنفيذها كأنها ملف ثنائي. وفي النهاية آلة جافا اﻹفتراضية تقوم بتحويل الـ byte code إلى برنامج ثُنائي حسب نظام التشغيل في الذاكرة لتنفيذه.
   أبو عبد البر - أحمد صحبي   
هذا قد ينفعك
http://www.excelsior-usa.com/articles/java-obfuscators.html
   Snack3r - Unknown   
الـ obfuscation تأثيرها محدود جداً، جربتها سابقاً مع ProGuard و هو الأفضل في هذا المجال، لكن كل ما يقوم به هو تغيير أسماء الكلاسات و الدوال و المتغيرات و الكود سورس يظل مرئياً عند عمل decompilation.
يُمكنك عمل obfuscation باستخدام ProGuard مثلا و فتح الجار بـ Java Decompiler، ستلاحظ أن الكود سورس يتم التقاطه بالكامل !
   MML.Pro - محمد مجدي   
كيف تكون اللغة الثانية على مستوى العالم في البرمجة حالياً و غير قابلة للتشفير و الحماية ، أنا مبتدأ و مع ذلك غير مقتنع بمعظم الكلام إنها فضيحة بالنسبة Java في تشفير ال Source code ، هل هذا يعني أن معظم البرامج المكتوبة بالجافا سهلة الكسر ؟!
   معتز - معتز عبدالعظيم   
 

هل هذا يعني أن معظم البرامج المكتوبة بالجافا سهلة الكسر


نعم هذا صحيح، لكن لا توجد برامج كثيرة مكتوبة بالجافا موجهة لسطح المكتب، معظم برامج الجافا مستخدمة بكثرة في مجال الأعمال الكبيرة enterprise business مثل شركات اﻹتصالات. وهي تكون إما برامج ويب أو خدمات ويب، أو برامج خدمية services تعمل في المخدمات، أي لا يستطيع المستخدم العادي الوصول لها حتى يقوم بكسرها. وقليل منها ماهو موجه لسطح المكتب ليعمل في تلك المؤسسات.
   Snack3r - Unknown   
 

لكن لا توجد برامج كثيرة مكتوبة بالجافا موجهة لسطح المكتب


غير صحيح إطلاقاً، JavaSE كُتبت بها مئات البرامج و سأعطيك بعض الأمثلة :

Eclipse : لا داعي لتعريفه، و هو مكتوب بـ SWT.

IntelliJ IDEA وهو برنامج تجاري عبارة عن بيئة تطوير متكاملة تمت كتابته من طرف شركة JetBrains و قد تمت برمجته باستخدام Swing.

jEdit : محرر نصوص مُوجه للمبرمجين، تمت كتابته بالكامل بالجافا و يعمل تحت الويندوز، لنكس و Mac OS.

EditiX : من أشهر الـ XML editors و يدعم DTD, XSLT, XSL-FO, XSD, RelaxNG.

GenealogyJ : برنامج متخصص في علم الأنساب و متوافق مع GEDCOM، يعمل في كافة أنظمة التشغيل.

Oracle SQL Developer : الكل يعرفه، و قد تمت كتابته بالجافا أيضاً.

أغلب البرامج الـ Modelisation بـ UML كُتبت بالجافا مثل : ArgoUML, AmaterasUML, Eclipse UML2 Tools, Topcased, UML Designer, Papyrus, Violet, Visual Paradigm for UML.

أيضاً، الكثير من الـ IDE كُتب الجافا مثل : NetBeans, Codenvy, JBuilder, JCreator, JDeveloper, Xcode, Geany و القائمة تطول ..

FreeMind : من أفضل البرامج التي تقوم برسم الخرائط الذهنية، تمت كتابته بالجافا بشكل كامل.

muCommander : من أفضل البرامج التي تقوم بتسيير الملفات، برنامج راقي جداً.

Vuze : عميل BitTorrent يمتاز بسهولة التعامل معه و الفعالية.

JDiskReport : برنامج متخصص في صيانة الكمبيتور و استخدامه سهل جداً.

VisualVM : أداة تسمح بقياس سرعة أداء و كفائة البرامج المكتوبة بالجافا قيد التشغيل.

Sweet Home 3D : يسمح بتخطيط عمارات ثلاثية البعد و قد كُتب بالجافا !


و القائمة طويلة جداً، لاحظ أنني لم أتحدث عن البرامج التي شاركت الجافا في كتابتها مع لغات أخرى مثل السي++ و البايثون و السي شارب، إلخ.
مثلا OpenOffice كُتب بالسي++ و الجافا و الـ NASA World Wind كُتبت بالجافا و السي شارب و ThinkFree Office كُتب بالأجاكس و الجافا و القائمة طويلة جداً ..
لم أتحدث أيضا عن برامج تسيير قواعد بيانات NoSQL و التي أغلبها كُتب بالحافا مثل Cassandra الذي كانت تستخدمه شركة الـ Facebook قبل أن تتخلى عنه صالح شركة Apache و هناك أيضاً Voldemort و Habse و Neo4j و OrientDB و InfiniteGraph.
لهذا قلتُ لك يا أخي الفاضل أنك تتحدث للأسف عن أشياء لا تعرفها مع احترامي الشديد لك :)
   معتز - معتز عبدالعظيم   
هذه ليست قائمة طويلة. البرامج المكتوبة بلغات طبيعية مثل سي وسي ++ أكثر منها.
برامج جافا سيئة جداً في استغلال الموارد مقارنة بمثيلاتها المكتوبة بلغات أخرى. مثلاً قارن برنامج Vunze و Transmission torrent اﻷول برنامج بطيء جداً ويستهلك ذاكرة ومعالج. قمت بإنزاله ثم لم اعد استخدمه بعد ما جربته أكثر من مرة، رجعت لبرنامج Transmission . ايضاً استخدم NetBeans وهي أداة رائعة، لكنها مستهلكة جداً للموارد، مقارنة بأدوات تطوير أخرى مثل دلفي. JBuilder مكتوبة بالدلفي وليس جافا، والدليل أنها لا تعمل في نظام لينكس.
Swing هي مكتبة سيئة جداً مقارنة بالمكتبات الطبيعية لأنظمة التشغيل مثل QT, GTK, Win32/64
 

لهذا قلتُ لك يا أخي الفاضل أنك تتحدث للأسف عن أشياء لا تعرفها مع احترامي الشديد لك :)


أنت لا تعرف التكلم مع الناس، ولا تعرف الاحترام. مكانك المنتديات هي مليئة بأمثالك، وليس هنا. انا مستغرب أنك من موريتانيا، هل أنت متأكد أنك من ذلك.
لماذا تردد عبارات ليس لها معني ومتناقضة مع ما تقول. مثل أخي الفاضل، ومع احترامي لك. أن لا تتكلم معي بأي احترام
   Snack3r - Unknown   
 

هذه ليست قائمة طويلة. البرامج المكتوبة بلغات طبيعية مثل سي وسي ++ أكثر منها.


هذا غيض من فيض و لو أدرتُ الاستفاضة لفعلت.
 

برامج جافا سيئة جداً في استغلال الموارد مقارنة بمثيلاتها المكتوبة بلغات أخرى. مثلاً قارن برنامج Vunze و Transmission torrent اﻷول برنامج بطيء جداً ويستهلك ذاكرة ومعالج.


وجود برنامج أو اثنين بهذا المستوى لا يعني التعميم، إن كنا نتحدث عن استغلال الموارد و تسيير الذاكرة فالسي و السي++ هما الأفضل و بدون منازع لكن هذا لا يعني أن الجافا لا ترقى لمستوى المنافسة لأن عشرات البرامج المكتوبة بالجافا لا زالت تُنافس و بقوة مثيلاتها في السوق.
 

JBuilder مكتوبة بالدلفي وليس جافا


تأكد من ذلك، جزء كبير من JBuilder تمت كتابته بالجافا.
 

Swing هي مكتبة سيئة جداً مقارنة بالمكتبات الطبيعية لأنظمة التشغيل مثل QT, GTK, Win32/64.


لا أوافقك الرأي مُطلقاً.
 

انا مستغرب أنك من موريتانيا، هل أنت متأكد أنك من ذلك.


نعم !
 

لماذا تردد عبارات ليس لها معني ومتناقضة مع ما تقول. مثل أخي الفاضل، ومع احترامي لك. أن لا تتكلم معي بأي احترام


أعتذر لك إن كنت قد أسأت إليك.
   معتز - معتز عبدالعظيم   
مادام اعتذرت فلا مشكلة.
في الماضي كُنت استخدم دلفي (لغة أوبجكت باسكال) لمدة قاربت العشرين سنة. لكن بسبب المقاطعة الأمريكية للسودان توقفت عن استخدام دلفي وتحولت إلى جافا، وهي لغة رائعة، كلغة برمجة غنية، لكن مشكلتها الكبيرة هي في اﻷداء واستهلاك الموارد مقارنة بدلفي وبما تعودته من كتابة برامج لشركات اﻹتصالات تحتاج لتكون سريعة وتعمل لوقت طويل دون توقف، أيضاً تعودنا أن يكون هُناك عدد كبير من البرامج في نفس الجهاز. وقد نافسنا شركة أوروبية كانت قد كتبت برنامج بلغة جافا في عام كامل، فقمنا بإعادة كتابته بواسطة دلفي في ثلاث أشهر فقط ولم تكن فيه عيوب البرنامج اﻷول. فما كان من شركة اﻹتصالات إلا أن أوقفت التعامل مع الشركة اﻷوروبية وإيقاف برنامجها.
لكن اﻵن أصبحت استخدم جافا فقط في معظم برامج الاتصالات، مثل خدمات الويب وبرامج الويب، وقد طورنا برنامج بقيمة 30 ألف دولار، معظمه كان مكتوب بالجافا. لكن بين الحين واﻵخر ما زلت أجد مشكلة استهلاك الموارد. وتعدد نُسخ المنصات Java 1.6, 1.7 كذلك لم اعتبرها حل لتطوير برامج سطح المكتب. أحياناً نقوم بكتابة برنامج بواسطة فري باسكال وتكون خلفيته خدمة ويب مكتوبة بالجافا تعمل في Tomcat. لغة فري باسكال ما تزال في طور الشباب، بعض بروتوكولات اﻹتصالات غير موجودة فيها، نقوم بسد تلك الثغرة بواسطة برنامج جافا، ونفص جافا نقوم بإتمامه بلغة فري باسكال. هذا بالنسبة لنا، أما باقي الشركات ربما يكون لهم طريقة اخرى لتغطية كل نفص في لغات البرمجة. احياناً نقوم بإستخدام لغة PHP مع الجافا.
المشكلة تكمن في الشخص الذي يعتقد أن هناك لغة سحرية تستطيع عمل كل أنواع البرامج. وأنا شخصياً كنت اعتقد ذلك عندما كنت استخدم دلفي، كنت متعصب لها واعتبرها هي اللغة اﻷولى في العالم وماعداها لا يرقى لمستواها. أما اﻵن فأختلف هذا التفكير. وإلا لما سمعنا عن صدور لغة برمجة جديدة بين الفينة واﻷخرى.
   معتز - معتز عبدالعظيم   
 

Swing هي مكتبة سيئة جداً مقارنة بالمكتبات الطبيعية لأنظمة التشغيل مثل QT, GTK, Win32/64.
لا أوافقك الرأي مُطلقاً.


مكتبة Swing القياسية شكلها بدائي جداً مقارنة بالمكتبات اﻷخرى. مثلاً File dialog قارن بينه وبين الـ File Dialog الموجود في الوندوز وفي لينكس QT أو GTK تجده بدائي جداً مشابه لـ FIle dialog الذي كان يأتي مع وندوز 3 في التسعينيات
   Snack3r - Unknown   
 

مكتبة Swing القياسية شكلها بدائي جداً مقارنة بالمكتبات اﻷخرى. مثلاً File dialog قارن بينه وبين الـ File Dialog الموجود في الوندوز وفي لينكس QT أو GTK تجده بدائي جداً مشابه لـ FIle dialog الذي كان يأتي مع وندوز 3 في التسعينيات


أنت تتحدث عن الشكل الافتراضي لـ File dialog لكن عموماً شكل مُكونات Swing يتغير حسب الـ Look and Feel.
إن أردت الحصول على File dialog تبع السيستم فقم بتغيير الـ Look and Feel إلى SystemLookAndFeel ! :)
   معتز - معتز عبدالعظيم   
جربت تغيير الـ SYstelLookAndFeel من قبل لكن لم أجربه مع الـ File dialogسوف اقوم بتجربته إن شاء الله، وأخبرك بالنتيجة
   معتز - معتز عبدالعظيم   
هذه ثلاث صور للـ File dialog

Default swing

look and feel

Free Pascal GTK2


كلها في نظام أوبونتو لينكس
http://code.sd/share/opendialog.png
وهذه هو كود جافا
 
public static void main(String[] args) {
try {
UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JPG & GIF Images", "jpg", "gif");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException | HeadlessException ex) {
System.err.println("Error in look and feel: " + ex.toString());
}
}
}


وهذا كود أوبجكت باسكال لفتح الـ Open dialog
 
OpenDialog1.Execute;

   Snack3r - Unknown   
توجد أدوات كثيرة جداً لتغيير الـ LookAndFeel.
من ناحية الـ design أفضل jtattoo :)
هذه صورة لـ password manager كتبته سابقاً بالحافا :
http://image.noelshack.com/fichiers/2014/43/1414346859-demo.jpg
   Snack3r - Unknown   
 

مكانك المنتديات هي مليئة بأمثالك، وليس هنا


فقط للتوضيح أخي الكريم، أنا قادم من منتدى الفريق العربي للبرمجة و كنت أحد المشرفين على قسم السي و السي++ و أؤكد لك أن ما يحويه arabteam من العلم و الفائدة لا يوجد ثلثه هنا، ليس هذا من باب المفاخرة و لكن من باب الحقيقة، الفريق العربي تم إطلاقه قبل 14 سنة من الآن و كان يجمع كبار المبرمجين في العالم العربي قبل أن تُصبح المنتديات démodés و تنتقل الناس إلى المدونات و ما شابه.
قولك بأن المنتديات تليق بي و بأمثالي يعني أنك لم تزر الفريق العربي سابقاً، لذا أدعوك لزيارته و التعرف عل كم المعلومات الهائل الذي يحتويه المنتدى و هو الآن أكبر و أقدم مرجع عربي للمبرمجين.
أما بالنسبة لي فأقترح عليك زيارة المواضيع و الدورات التي كتبتها في arabteam لتحكم علي بدقة أكثر.
   معتز - معتز عبدالعظيم   
أنا لا أتكلم عن المعلومات التي تقولها، لكن عن أسلوبك في الحديث
   Snack3r - Unknown   
بالنسبة لأسلوبي في الحديث
On s'est mal compris, je reconnaissais mes erreurs et je t'ai demandé pardon, donc nous devons dorénavant oublié ce qui s'est passé
لك مودتي.
   معتز - معتز عبدالعظيم   
ليس هُناك مشكلة، فقد تعلمت كثيراً في هذا اليوم :)
الساعة تقارب التاسعة مساءً وأنا فاتح أدوات البرمجة NetBeans و Free Pascal Lazarus وهذا من النادر ما يحدث.
شكراً لك
زوجتي ظنت أني أكتب مقالة عن الضرائب، من شدة انهماكي في هذا الوقت المتأخر مع الكمبيوتر. فقد كُنت في زيارتهم اليوم، وفرضوا علي مبلغ كبير. ولم استطع العمل اليوم بسبب ذلك، لكن الحمد لله اليوم لم يضع، طلعت منه ببعض المعلومات المهمة حول لغات البرمجة.
   معتز - معتز عبدالعظيم   
لا تنسى أيضاً أن الـ JVM مكتوبة بلغة سي أو سي++، أي أن لغة جافا معتمدة على لغة أخرى في بنيتها الأساسية، ولا تستطيع الاستغناء عن اللغات الـ native أما باقي اللغات فلا تحتاج للجافا في شيء، يمكن أن يكون لديك جهاز حاسوب خالي تماماً من كل برامج الجافا، كلها برامج طبيعية سريعة الاستجابة واقل استهلاكاً للموارد.
   Snack3r - Unknown   
 

لا تنسى أيضاً أن الـ JVM مكتوبة بلغة سي أو سي++


لا أنكر ذلك :)
مقارنة الجافا مع السي أو السي++ من حيث تسيير الذاكرة مقارنة خاطئة لأن الـ garbage collector مكتوب بالسي و بالتالي الجافا لا تُسير الذاكرة من تلقاء نفسها.
 

يمكن أن يكون لديك جهاز حاسوب خالي تماماً من كل برامج الجافا


لا أتفق معك، الجافا الآن موجودة و بقوة في كافة الميادين على عكس السي و السي++، الجافا موجودة في : تطبيقات سطح المكتب، تطبيقات الويب ، تطبيقات الهاتف و حتى الثلاجات و الساعات و حفائظ الأطفال باستخدام Android Wear.
   معتز - معتز عبدالعظيم   
الجافا غير موجودة في منصات أهم، وهي: Android و I-phone
أو على اﻷقل شعارهم write once and run anywhere غير صحيح، لا يمكنك كتابة برنامج جافا لوندوز ثم تشغيله في أندرويد أو I-phone. وبرنامج أندرويد المكتوب بالجافا الخاصة بقوقل لا يمكن تشغيله في موبايل آخر ذو نظام تشغيل مختلف حتى لو كان يدعم جافا مثل Blackberry
   Snack3r - Unknown   
لا أريد الخروج عن الموضوع لأن معرض الحديث هنا ليس عن مقارنة الجافا بنظيراتها في السوق و إن تلاقينا مُستقبلا في موضوع مُماثل فيمكنني الإسهاب أكثر.
بالتوفيق.
   معتز - معتز عبدالعظيم   
السلام عليكم
ماهو رأيك في هذا الخبر، أن Cassandra تمت إعادة كتابتها بلغة C++ فأصبحت أسرع 10 مرات من النُسخة المكتوبة بجافا
http://itwadi.com/node/2882
   Snack3r - Unknown   
أخي الفاضل، اقرأ و تعلم قبل أن تحكم على شيء ما.
اسمحولي إخوتي الكرام أن أنسحب من هذا النقاش و سُعدت جداً بهذا الحوار :)
   binadion - حينَّ يصبح التفكير كالخط المستقيم ، يموت العقل   
تذكر ، كنتَ أنت مثلهم أو أقل يوماً ما :)
-
إن كنت ترى أرابيا يملأها الغير متعلمين :) فلما أنتَ هنا ؟ عليك بذهاب والجلوس مع لاري أو بيل جيتس ، فالمبرمجون هنا ليسوا من المستوى :)
-
اسمحلي ولكن تعليقاتك كلها تستنقص بالأخرين ، نعم لديك علم بالأمر ، ولكن هذا لا يبيح لك مثل هكذا أسلوب في ردود ، فهو لا يدل على ذو ثقافة أبداً :)
   MML.Pro - محمد مجدي   
+1 Binadion ، هو أعتقد أن تعليقي للسخرية منه أو من اللغة ولم يفهم بأني أردت فهم طرق التشفيير ولو أعلم بأنه سيرد بهذا الرد ماكنت سألته ، و بما أنه يسخر من التعليقات ، أنا أسأله هل تعلم العلم كله ؟!
   Snack3r - Unknown   
طالب العلم في رحلة مٌستمرة للبحث عن ما ينقصه لأن العلم في تطور و الحكمة ضالة المؤمن أينما وجدها فهو أحق بها.
 

إن كنت ترى أرابيا يملأها الغير متعلمين


لم أقل هذا أبداً !
 

اسمحلي ولكن تعليقاتك كلها تستنقص بالأخرين


لم أستنقص من الآخرين و لكن أرى أنه من غير الجدية و الموضوعية أن يتكلم أحد في شيء لا يتقنه، هل هذا خطأ ؟
   معتز - معتز عبدالعظيم   
 

لم أستنقص من الآخرين و لكن أرى أنه من غير الجدية و الموضوعية أن يتكلم أحد في شيء لا يتقنه، هل هذا خطأ ؟


قل لي اسم شخص واحد يتقن لغة برمجة ما. حتى لو كان هو من طورها.
في إحدى المرات وجدت احد مطوري مترجم فري باسكال أو أداة التطوير لازاراس، فسألته عن أشياء فيها. فقال لا يعرفها، فاستغربت من ذلك، لكنه أقنعني أنه مشروع كبير وكل شخص متخصص في مجال معين فيه.
   binadion - حينَّ يصبح التفكير كالخط المستقيم ، يموت العقل   
 

طالب العلم في رحلة مٌستمرة للبحث عن ما ينقصه لأن العلم في تطور و الحكمة ضالة المؤمن أينما وجدها فهو أحق بها.


أقتبس لك رد الأخ الذي رددت على رده :
 

هو أعتقد أن تعليقي للسخرية منه أو من اللغة ولم يفهم بأني أردت فهم طرق التشفيير


وأقتبس لك من رده الأول :
 

هل هذا يعني أن معظم البرامج المكتوبة بالجافا سهلة الكسر ؟!


المنطقي عندما يطرح سؤال شخص في أي مكان في العالم ، سيكون الرد " جواب " على السؤال ، وليس طلب منه أن يذهب ويتعلم ، فهو سأله بالأصل للتعلم ، ويمكنك قرآءة الرد التالي : https://arabia.io/go/14772/67736 ، وتركيز على نقطة تالية :
 

على الأرجح أنك لن تحتاج أن تبحث عن دورة ROR كما يفعل المبتدئ في عالم البرمجة. بل سوف تكون اسألتك ماهي طرق الاتصال بقاعدة البيانات ...


أي أنه في عامل البرمجة السؤال يدل على علم مسبق في المعطيات ويريد جواب، ولا يجهلها البتة !
-
-
 

لم أقل هذا أبداً !


عزيزي إنظر لكل ردودك هنا ، بصراحة لم استفد إلا قليل منها ، لأن أغلبها ليس منطوي تحت أي فائدة أو نقاش ضمن الموضوع :)
-
-
 

لم أستنقص من الآخرين و لكن أرى أنه من غير الجدية و الموضوعية أن يتكلم أحد في شيء لا يتقنه، هل هذا خطأ ؟


هل أنتَ جاد ؟ لماذا وجدَ مجتمعات للنقاش ؟ أليس ليناقش ذو الخبرة بعضهم وقليل الخبرة يتعلم من نقاشه ؟ أصلاً ما فائدة النقاش إلا تعلم الطرفين !
بل أكبر خطأ ، إن كنت ترى أن لا يجب التكلم إلا من الخبراء ، حسناً كلامي هذا قط لم يكن خطأ ، وأقتبس :
 

عليك بذهاب والجلوس مع لاري أو بيل جيتس ، فالمبرمجون هنا ليسوا من المستوى :)


-
أسف على وقتك ، وأعتذر لن أكمل نقاش حول هذا الأمر :)
   Snack3r - Unknown   
 

المنطقي عندما يطرح سؤال شخص في أي مكان في العالم ، سيكون الرد " جواب " على السؤال ، وليس طلب منه أن يذهب ويتعلم


قوله "هذه فضيحة للجافا" استفزني جداً و لا أدري كيف يأخذ أحكاما مُسبقة و هو يقول بأنه مبتدأ.
الهجوم على لغة ووصفها بالفضيحة سوقيٌ جداً و لا يمت للموضوعية بصلة و أنا أفضل الانسحاب في هذه الحالة لأن النقاش سيأخذ مجرى آخر.
 

أسف على وقتك ، وأعتذر لن أكمل نقاش حول هذا الأمر :)


طابت أوقاتك، بالتوفيق.
   binadion - حينَّ يصبح التفكير كالخط المستقيم ، يموت العقل   
فقط للتوضيح
 

استفزني جداً و لا أدري كيف يأخذ أحكاما مُسبقة و هو يقول بأنه مبتدأ.


ركز في جملته :)
 

و مع ذلك غير مقتنع بمعظم الكلام إنها فضيحة بالنسبة Java


-
وطاب مسائك :)
   Snack3r - Unknown   
شكراً على التوضيح :)
بالتوفيق للجميع.
   MML.Pro - محمد مجدي   
كنت أعتقد أن فكرك غير محدود ، لما عرفت لماذا هاجمتني غيرت رأيي فيك :) ، بالمناسبة جملة "أنا مبتدأ و مع ذلك غير مقتنع بمعظم الكلام إنها فضيحة بالنسبة Java في تشفير ال Source code" أنا قصدت بهذة الجملة إني على غير إقتناع بالرد الأعلى الخاص بالأخ "معتز" لما قال إنها فضيحة بالنسبة اللجافا لأنها اللغة الثانية في الإستخدام وليس مهاجمة اللغة بحد ذاتها ، كيف أهاجم أول لغة تعلمتها ؟! خلاصة الكلام ليس ذنبي إنك فهمت قصدي غلط وظلمتني وأتمنى عدم الحكم السريع على الأشخاص
   Snack3r - Unknown   
 

كنت أعتقد أن فكرك غير محدود ، لما عرفت لماذا هاجمتني غيرت رأيي فيك :)


أحسنت !! :)
 

خلاصة الكلام ليس ذنبي إنك فهمت قصدي غلط وظلمتني وأتمنى عدم الحكم السريع على الأشخاص


اعتذر لك.
   أبو عبد البر - أحمد صحبي   
الغاية هي التصعيب على على الهاكرز إلى أقصى حد لا سيما إذا عقدت الكود أنت بكثرة الاستدعاءات من دالة لأخرى وتعقيد الكود إلى درجة ان لن تفهمه أنت لو غبت عنه شهرا
   Snack3r - Unknown   
بالمناسبة، أرجو من الإخوة الكرام عدم الإفراط في التقييم بالسالب مع أنني لا أكترث له أبداً لكن من الناحية الموضوعية، يجب أن يخضع التقييم لأسباب منطقية بعيداً عن الشخصنة.
ردي مثلا على الأخ أبو عبد البر لا أدري لماذا تم تقييمه بالسالب !! :)
   أبو عبد البر - أحمد صحبي   
هل عرفت الآن لماذا نريد منصة تحترم عقول الناس
   Snack3r - Unknown   
يعني أن Arabia IO لا تحترم عقول الناس ؟ :)
   أبو عبد البر - أحمد صحبي   
لا بل اقصد كثيرا من مستخدميها الذين صار التقييم السلبي والإجابي عندهم كاللعبة في يد الطفل
لو كان الأمر إلي لما جعلت التقييم السلبي إلا لمن حصل 200 نقطة أو أكثر ، على الأقل أضمن أن المقيم بالسالب رجل ذو علم وهو أعلم بما يفعل
التقييم السلبي لا يهمني ولكن له تاثير على المشاركات ، فكم من مشاركة مفيدة قيمت سالبا فنزلت في الظهور للناس وكم من مشاركة ساذجة قيمت إيجابا فكانت اول ما يظهر للناس
لا ينبغي أن يكون التقييم ممكنا لعامة الناس بل لا لابد أن يكون لمن هو أهل لذلك
   Snack3r - Unknown   
+1
معك كامل الحق :)
   Snack3r - Unknown   
+1 على المشاركة الأولى
  الموضوع و التعليقات و باقي البيانات في هذه الصفحة منقولة و معدلة من المصدر على الرابط التالي : https://io.hsoub.com/java/14709
  هذا الموضوع مرخص تحت : رخصة المشاع الإبداعي BY-SA
المشاركة :
تويتر
فيسبوك
الإيميل
لينكد إن
واتساب
الرابط

#تجارب هيثم 7 : تجربتي مع التطبيقات والمتاجر الإلكترونية - (تقرير مميز) #تجارب هيثم 7 : تجربتي مع التطبيقات والمتاجر الإلكترونية - (تقرير مميز)
31 - سلسلة تبسيط البرمجة – البرنامج الأول بـ WPF و #C و XAML 31 - سلسلة تبسيط البرمجة – البرنامج الأول بـ WPF و #C و XAML
مُد يدك لعَون شغف يكاد ان ينطفئ. مُد يدك لعَون شغف يكاد ان ينطفئ.
هذه هي أفضل 100 جامعة عربية.. السعودية تتصدر هذه هي أفضل 100 جامعة عربية.. السعودية تتصدر
قبل البدء بتطير تطبيق للاجهزة المحمولة .. هل تقوم بكتابة او تصميم او تدوين افكارك ؟ او خارطة التطبيق ؟ قبل البدء بتطير تطبيق للاجهزة المحمولة .. هل تقوم بكتابة او تصميم او تدوين افكارك ؟ او خارطة التطبيق ؟
ايهما اكثر متعة: تطوير الويب او تطوير الموبايل؟ ايهما اكثر متعة: تطوير الويب او تطوير الموبايل؟
أحمد يطلق الإصدار الخامس لبرنامج مدير الصيدالية ويستمر في تطويره  لإطلاق الاصدار 5.1 أحمد يطلق الإصدار الخامس لبرنامج مدير الصيدالية ويستمر في تطويره لإطلاق الاصدار 5.1

gg gg
مراجعات - تقييمات - فديوها - مقالات و مختلف المواضيع التي تهم اللاعبين العرب
http://gg.leomara.com/
الروابط المختصرة    سياسة الخصوصية    شروط الإستخدام    من أنا    من نحن    الأسئلة الشائعة    موضوع عشوائي    اتصل بنا   
                           
Developed by : MJ7.org